Applies ToMicrosoft 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. 函数的结果显示在"数据预览"中,并作为默认名称为"已调用函数"的查询添加到"查询"窗格。 可能需要将其重命名为更有意义的名称,例如"HelloWorldResult"。

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

Results 

工作表中的 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. 函数的结果显示在"数据预览"中,并作为默认名称为"已调用函数"的查询添加到"查询"窗格。 可能需要将其重命名为更有意义的名称,例如"MyHexResult"。

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

Results 

工作表中 MyHex 函数的结果

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

  1. 若要打开查询,请找到以前从 Power Query 编辑器加载的查询,在数据中选择一个单元格,然后选择"查询>编辑"。 有关详细信息,请参阅在 Power Query Excel (创建、编辑和) 。注意   对于此示例,查询至少需要一列全数数据类型。

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

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

  4. 在"新建列名称"框中输入新列名,例如"HexConvert"。

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

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

  7. 选择一 列"整 数据类型作为函数的参数。 "调用自定义函数"对话框

  8. 选择“确定”。

结果

将创建一个新列,显示作为参数输入的"全数"列的十六进制值。

工作表中值的新 MyHex 列

另请参阅

Power Query for Excel 帮助

在公式中创建 Power Query Excel

创建参数查询

管理查询

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

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

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。