01什么是 M 函数?
M 函数是微软为 MicroSoft Power Query 设计的公式语言,简称 M 函数。
所以顾名思义,M 函数只能用在 Power Query 中。
M 函数和 Excel 中的函数相比,有下面几个优势:
❶ 数据处理能力更强。
Excel 的函数公式处理上万行数据的时候,就会出现明显的卡顿。
M 函数是基于 Power Query 的,Excel 中的数据需要先加载到 Power Query 中,数据处理能力倍增,处理几十万行的数据毫无压力。
❷ 数据计算方式更丰富。
普通的 Excel 函数,处理数据通常只有数据计算、文本处理、数据查询这几种方式。
而 M 函数基于 List、Table 等对象,可以实现 分组统计、透视列、逆透视、合并查询、拆分表格、表格结构重组等更多复杂的表格操作。
02M 函数能干啥?
举一个很简单的例子。
我们经常需要根据某个条件,查询所有符合的记录。
在 Excel 中要编写这么复杂的公式。
= Table.SelectRows(源, each ([部门] = "工程部"))
而在 M 函数中,只需要一个 SelectRows 一个函数,就可以轻松实现。
= Table.SelectRows(源, each ([部门] = "工程部"))
而且计算的结果和原始数据保持联动,数据发生变动,统计结果只需要右键,就可以 一键刷新。
03M函数编写位置
接下来,我们从函数编写第一步开始,再来看看 Excel 函数和 M 函数,更细节的对比。
▋ Excel 函数
Excel 在任意单元格都可以写函数,只要用等号开头就可以。
❶ 可以在单元格里写=A2,引用 A2 单元格的值;
❷ 可以在公式栏里写=SUM(B3:D4)函数,对数据求和。
▋ M 函数
M 函数在 Power Query 中编写,同样也有两种方法:
可以在公式栏里写 M 函数:
步骤如下:
❶ 先点击 fx,创建一个新的步骤然后开始;
❷ 在公式栏中开始写公式。
也可以在「高级编辑器」中,用代码的形式来写 M 函数:
步骤如下:
❶ 在「主页」菜单中,点击「高级编辑器」;
❷ 给这个步骤起一个名字 Sumresult;
❸ 其名字后面编写 M 函数公式。
04函数名称
函数公式根据用途,可以分为 统计函数、文本函数、查询函数等类型。
▋ Excel 函数
Excel 中可以在「公式」栏中,根据分类选择使用对应的函数。
如果是直接手写函数,没有相关的分类提示。
▋M 函数
M 函数的分类管理,使用了编程中的「包」管理策略。
根据不同的数据类型,设定了不同的「包」,使用函数的时候,需要先写「包」名称。
比如,前面统计 3 月销量的公式,步骤如下:
❶ 先写 List 包名称;
❷ 然后写 List.Sum 函数,对表格「源」中的「3 月」这一列求和。
所有的 M 函数,都要先写包名称。
05参数类型
参数就是函数公式计算需要的原材料。
M 函数学习的一个大门槛,就是对于参数类型(或者说数据类型)的理解。
▋ Excel 函数
函数参数类型,都是具体的数值,这个数值有两种参数形式:
❶ 数值,直接写在函数中;
❷ 引用,通过单元格引用,写入函数中。
▋ M 函数
除了常规的数值类型,M 函数中增加了 3 个数据类型: Record、List、Table。
引入了编程中的「对象」的概念,增加了学习难度。