Crear e invocar una función personalizada

Se aplica a
Excel para Microsoft 365 Excel 2024 Excel 2021

Una función personalizada usa el lenguaje de fórmulas M, toma un conjunto de valores de entrada y devuelve un único valor de salida. Si tiene lógica que desea reutilizar muchas veces o aplicar el mismo conjunto de transformaciones a una consulta o valor diferente, considere la posibilidad de crear una función personalizada y, a continuación, invocar la función donde y cuando la necesite. Hay varias formas de crear una función personalizada:

  • Utilice el Editor avanzado para agregar su propia instrucción let y empezar desde cero.
  • Use el comando Invocar función personalizada .
  • Hay otras maneras de crear funciones que no se describen en este tema de ayuda, incluidos los comandos Crear función y Agregar como consulta . Para obtener una explicación más detallada, vea Descripción de las funciones M de Power Query y Uso de funciones personalizadas.

Crear e invocar una función personalizada sencilla con el Editor avanzado

En el ejemplo siguiente se muestra una función personalizada sencilla que sigue una larga tradición de programación.

  1. Crear una consulta en blanco:

    Excel Seleccione Datos>Obtener datos>de otros orígenes>Consulta en blanco.

    Power Query Haga clic con el botón derecho en un espacio en blanco en el panel Consultas de la izquierda y, a continuación, seleccione Nueva consulta>Otros orígenes>Consulta en blanco.

  2. En el panel Consultas de la izquierda, haga doble clic en el nombre y cambie el nombre de la nueva consulta en blanco a HelloWorld.

  3. Seleccione la nueva consulta y, a continuación, seleccione Inicio>Editor avanzado.

  4. Reemplace el código de inicio de la plantilla por el código siguiente:
    let
         HelloWorld = () => ("Hello World")
    in
         HelloWorld

  5. Seleccione Listo.

  6. Ha cambiado la consulta, HelloWorld, a una función personalizada. Observe el icono de función Icono de función a la izquierda de él.

  7. Para invocar la función, selecciónela y, a continuación, seleccione Invocar en Vista previa de datos.

    Invocación de la función personalizada HelloWorld

  8. Los resultados de la función aparecen en la vista previa de datos y se agregan al panel Consultas como una consulta con el nombre predeterminado Función invocada. Es posible que quieras cambiarle el nombre por uno más significativo, como HelloWorldResult.

  9. Seleccione esa consulta y, a continuación, seleccione Inicio>Cerrar & Cargar para ver los resultados en una hoja de cálculo.

Resultados

Resultados de HelloWorld en una hoja de cálculo

Cree e invoque una función personalizada que tenga un parámetro con el Editor avanzado

En el ejemplo siguiente se muestra cómo pasar un parámetro a una función personalizada para convertir un número decimal en hexadecimal.

  1. Crear una consulta en blanco:

    Excel Seleccione Datos>Obtener datos>de otros orígenes>Consulta en blanco.

    Power Query Haga clic con el botón derecho en un espacio en blanco en el panel Consultas de la izquierda y, a continuación, seleccione Nueva consulta>Otros orígenes>Consulta en blanco.

  2. En el panel Consultas de la izquierda, cambie el nombre de la nueva consulta en blanco a MyHex.

  3. Seleccione la nueva consulta y, a continuación, seleccione Inicio>Editor avanzado.

  4. Reemplace el código de inicio de la plantilla por el código siguiente:
    let
         MyHex = (parameter1) => Number.ToText(parameter1,"X")
    in
         MyHex

  5. Seleccione Listo.

  6. Ha cambiado la consulta, MyHex, a una función personalizada. Observe el icono de función Icono de función a la izquierda de él.

  7. Para invocar la función, selecciónela. En Vista previa de datos, escriba un número en el cuadro parameter1 y seleccione Invoke.
    Invocación de la función personalizada MyHex

  8. Los resultados de la función aparecen en la Vista previa de datos. Power Query agrega los resultados al panel Consultas como una consulta con el nombre predeterminado Función invocada. Es posible que quieras cambiarle el nombre por uno más significativo, como MyHexResult.

  9. Seleccione esa consulta y, a continuación, seleccione Inicio>Cerrar & Cargar para ver los resultados en una hoja de cálculo.

Resultados

Resultado de la función MyHex en una hoja de cálculo

Agregar una columna invocando una función personalizada

Si crea una función con al menos un parámetro, puede invocarla como una función personalizada para crear una nueva columna y un nuevo valor para cada fila de una tabla.

  1. Para abrir una consulta, busque una cargada previamente desde el Editor de Power Query, seleccione una celda en los datos y, a continuación, seleccione Editar consulta>. Para obtener más información, vea Crear, editar y cargar una consulta en Excel (Power Query).

    Nota

    En este ejemplo, la consulta necesita al menos una columna de un tipo de datos Número entero .

  2. Cree la MyHex función personalizada como se explica en la sección, Cree e invoque una función personalizada que tenga un parámetro con el Editor avanzado.

  3. En la consulta, seleccione Agregar columna>Invocar función personalizada. Aparece el cuadro de diálogo Invocar función personalizada .

  4. Escriba el nuevo nombre de columna, como HexConvert, en el cuadro Nuevo nombre de columna .

  5. Seleccione el nombre de una función personalizada predefinida en la lista desplegable Consulta de función. En este ejemplo, seleccione MyHex.

  6. Dado que la función personalizada hace referencia a un parámetro, ahora se muestra el parámetro.

  7. Seleccione una columna de un tipo de datos Número entero como parámetro de la función.

    Cuadro de diálogo Invocar función personalizada

  8. Seleccione Aceptar.

Resultado

Se crea una nueva columna que muestra el valor hexadecimal de la columna Número entero que ha especificado como parámetro.

La nueva columna MyHex de valores en una hoja de cálculo

Vea también

Ayuda de Power Query para Excel

Crear una consulta de parámetros (Power Query)

Administrar consultas (Power Query)

Descripción de las funciones M de Power Query

Uso de funciones personalizadas