创建和调用自定义函数

应用对象
Microsoft 365 专属 Excel Excel 2019 Excel 2016 Excel 2013 Excel 2010

自定义函数使用 M 公式语言,采用一组输入值,然后返回单个输出值。 如果有想要多次重复使用的逻辑或将同一组转换应用于不同的查询或值,请考虑创建自定义函数,然后在需要时随时随地调用该函数。 可通过多种方式创建自定义函数:

使用高级编辑器创建和调用简单的自定义函数

下面是一个遵循长期编程传统的自定义函数的简单示例。

  1. 若要创建空白查询,请执行以下操作:

    Excel选择数据> 从其他源>获取数据>空白查询

    Power Query 右键单击左侧“查询”窗格中的空白位置,然后选择“新建查询>”“其他源>”空白查询“。

  2. 在左侧的 “查询” 窗格中,双击名称,然后将新的空白查询重命名为“HelloWorld”。

  3. 选择新查询,然后选择“>高级编辑器”。

  4. 将模板起始代码替换为以下代码:
    let
         HelloWorld = () => ("Hello World")
    in
         HelloWorld

  5. 选择“完成”。

  6. 已将查询“HelloWorld”更改为自定义函数。 请注意其左侧的功能 图标“功能”图标

  7. 若要调用函数,请选择它, 然后选择“在 数据预览中调用”。

    调用 HelloWorld 自定义函数

  8. 函数的结果显示在“数据预览”中,并作为默认名称为 Invoked Function 的查询添加到“查询”窗格中。 你可能想要将其重命名为更有意义的名称,例如“HelloWorldResult”。

  9. 选择该查询,然后选择“ 开始>”“关闭”&“加载 ”以在工作表中查看结果。

结果

工作表中 HelloWorld 的结果

使用高级编辑器创建和调用具有参数的自定义函数

下面的示例演示如何将参数传递给自定义函数以将十进制数转换为十六进制数。

  1. 若要创建空白查询,请执行以下操作:

    Excel选择数据> 从其他源>获取数据>空白查询

    Power Query 右键单击左侧“查询”窗格中的空白位置,然后选择“新建查询>”“其他源>”空白查询“。

  2. 在左侧的 “查询” 窗格中,将新的空白查询重命名为“MyHex”。

  3. 选择新查询,然后选择“>高级编辑器”。

  4. 将模板起始代码替换为以下代码:
    let
         MyHex = (parameter1) => Number.ToText(parameter1,"X")
    in
         MyHex

  5. 选择“完成”。

  6. 已将查询 “MyHex” 更改为自定义函数。 请注意其左侧的功能 图标“功能”图标

  7. 若要调用该函数,请选择它,然后在“数据预览”中,在 parameter1 框中输入一个数字,然后选择“ 调用”。
    调用 MyHex 自定义函数

  8. 函数的结果将显示在“数据预览”中,并作为默认名称为 Invoked Function 的查询添加到“查询”窗格中。 你可能想要将其重命名为更有意义的名称,例如“MyHexResult”。

  9. 选择该查询,然后选择“ 开始>”“关闭”&“加载 ”以在工作表中查看结果。

结果

工作表中 MyHex 函数的结果

通过调用自定义函数来添加列

如果创建了一个具有至少一个参数的函数,则可以将其作为自定义函数调用,为表中的每一行创建新列和新值。

  1. 若要打开查询,请找到之前从 Power Query 编辑器加载的查询,在数据中选择一个单元格,然后选择“查询编辑>。 有关详细信息,请参阅在 Excel 中创建、编辑和加载查询 (Power Query)

    备注 对于此示例,您的查询至少需要一列 “整数 ”数据类型。

  2. 创建“MyHex”自定义函数,如部分所述,使用高级编辑器创建和调用具有参数的自定义函数

  3. 在查询中,选择“添加列>”调用自定义函数“。 将显示“ 调用自定义函数” 对话框。

  4. 在“ 新列 名称”框中输入新列名称,如“HexConvert”。

  5. 从“函数查询”下拉列表中选择预定义自定义函数的名称。 在本示例中,选择“MyHex”。

  6. 由于自定义函数引用参数,因此现在将显示该参数。

  7. 选择整 数据类型的列作为函数的参数。

    “调用自定义函数”对话框

  8. 选择“确定”。

结果

随即创建一个新列,显示您作为参数输入的整数列的十六进制值。

工作表中新的 MyHex 值列

另请参阅

Microsoft Power Query for Excel 帮助

在 Excel 中创建 Power Query 公式

创建参数查询

管理查询

了解 Power Query M 函数 (docs.com)

使用自定义函数 (docs.com)