自定义函数使用 M 公式语言,采用一组输入值,然后返回单个输出值。 如果逻辑需要多次重复使用或将同一组转换应用到其他查询或值,请考虑创建自定义函数,然后在需要它时调用该函数。 创建自定义函数的方法有多种方式:
-
使用 高级编辑器添加自己的 let 语句,从头开始。
-
使用" 调用自定义函数" 命令。
-
有其他方法可以创建此帮助主题中未讨论的函数,包括 " 创建函数"和"添加 为查询" 命令。 有关深入讨论,请参阅了解 Power Query M函数 (docs.com) 和使用自定义函数 (docs.com) 。
下面是遵循长期编程传统的自定义函数的简单示例。
-
若要创建空白查询,Excel选择"数据">"从>源获取数据
">"空白查询"。 Power Query 右键单击左侧"查询"窗格中的空白点,然后选择"新建查询">"其他源>"空白查询"。 -
在 左侧的" 查询"窗格中,双击名称,然后将新的空白查询重命名为"HelloWorld"。
-
选择新查询,然后选择"开始">"高级编辑器"。
-
将模板初学者代码替换为以下代码:
let HelloWorld = () => ("Hello World") in HelloWorld
-
选择“完成”。
-
你已将查询"HelloWorld"更改为自定义函数。 请注意,函数 左侧。
-
若要调用函数,请选择它,然后选择" 在数据预览中 调用"。
-
函数的结果显示在"数据预览"中,并作为默认名称为"已调用函数"的查询添加到"查询"窗格。 可能需要将其重命名为更有意义的名称,例如"HelloWorldResult"。
-
选择该查询,然后选择"开始">"关闭&加载"以查看工作表中的结果。
Results
以下示例演示如何将参数传递给自定义函数,以将十进制数转换为十六进制数。
-
若要创建空白查询,Excel选择"数据">"从>源获取数据
">"空白查询"。 Power Query 右键单击左侧"查询"窗格中的空白点,然后选择"新建查询">"其他源>"空白查询"。 -
在 左侧的"查询 "窗格中,将新的空白查询重命名为"MyHex"。
-
选择新查询,然后选择"开始">"高级编辑器"。
-
将模板初学者代码替换为以下代码:
let MyHex = (parameter1) => Number.ToText(parameter1,"X") in MyHex
-
选择“完成”。
-
已将查询"MyHex"更改为自定义函数。 请注意,函数 左侧。
-
若要调用函数,请选择它,然后在"数据预览"中的parameter1框中输入一个数字,然后选择"调用"。
-
函数的结果显示在"数据预览"中,并作为默认名称为"已调用函数"的查询添加到"查询"窗格。 可能需要将其重命名为更有意义的名称,例如"MyHexResult"。
-
选择该查询,然后选择"开始">"关闭&加载"以查看工作表中的结果。
Results
如果已创建具有至少一个参数的函数,可以调用它作为自定义函数,为表中的每一行创建新列和新值。
-
若要打开查询,请找到以前从 Power Query 编辑器加载的查询,在数据中选择一个单元格,然后选择"查询>编辑"。 有关详细信息,请参阅在 Power Query Excel (创建、编辑和) 。 注意 对于此示例,查询至少需要一列全数数据类型。
-
创建"MyHex"自定义函数,如使用高级编辑器 创建并调用具有参数的自定义函数部分所述。
-
在查询中,选择"添加列>调用自定义函数"。 将显示 "调用自定义函数 "对话框。
-
在"新建列名称"框中输入新列名,例如"HexConvert"。
-
从"函数查询"下拉列表中选择预定义的自定义函数的名称。 本示例选择"MyHex"。
-
由于自定义函数引用参数,因此现在会显示参数。
-
选择一 列"整 数据类型作为函数的参数。
-
选择“确定”。
结果
将创建一个新列,显示作为参数输入的"全数"列的十六进制值。