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