乐于分享
好东西不私藏

微软有的,WPS也得有!虽然Query刚起步,但M函数我先学为敬

微软有的,WPS也得有!虽然Query刚起步,但M函数我先学为敬
说起WPS Query,很多人第一反应是“WPS也有Power Query了?
没错,WPS Query就是WPS表格里专门用来做数据清洗和转换的工具。它的优势在于:大部分常规操作点点按按就能完成,遇到复杂场景时还可以通过M函数来灵活处理。
最近在微信公众号后台,收到了不少小伙伴的留言,问能不能出一期WPS Query的M函数的入门介绍。有的说从Power Query转过来,对WPS里的M函数支持程度心里没底;也有的说刚开始接触数据清洗,听说M函数很强大但不知道从哪下手。大家的关注点虽然不太一样,但需求很一致:想先简单了解一下WPS Query里M函数到底能做什么、怎么用。

不过说实话,目前的WPS Query还处于刚上线的阶段。和微软Office里成熟的Power Query相比,它最明显的区别在于:M函数的编写入口目前只有“添加自定义列”这一种方式,并没有像Power Query那样独立的M函数高级编辑器可以让我们自由修改整段查询代码。这意味着我们现在还无法像在Power Query里那样,在编辑器中直接编写、调试或者重写完整的M表达式。再加上WPS Query上线时间不长,M函数的函数库覆盖度、错误提示的友好度,以及复杂场景下的运行稳定性,都还在逐步完善中。所以客观来说,指望它现在就去应对企业级的数据处理需求,还不太现实。

但话说回来,这并不妨碍我们先学起来、用起来。一方面,WPS Query背靠WPS庞大的用户生态,后续的迭代速度大概率不会慢;另一方面,对于日常工作中80%的数据清洗场景:比如合并表格、拆分列、条件判断、去重、筛选、添加索引等,WPS Query配合“自定义列”里的M函数已经能够比较顺手的解决了。提前熟悉这些函数逻辑和操作思路,等后续功能更完善时,你就能无缝衔接、快速上手。简单来说,把它当作一个轻量级的数据清洗助手来用,解决日常需求完全够用,而且先了解肯定没有坏处。下面我们就从“自定义列”这个最常用的入口开始,用几个简单的场景体会一个M函数。

简单的场景(1):
我们有一张成绩表,包含“语文”、“数学”、“英语”3列,想快速算出每位学生的“总分”。
首先就是将数据源导入WPS Query
选中需要导入的数据源区域
点击“数据-获取数据-从表格/区域获取”:
在弹出的“创建表”对话框中
默认勾选“表包含标题”和“筛选按钮”
在WPS Query编辑器中,点击“自定义列
在弹出的窗口中:
新列名:输入“总分”。
自定义列公式:在公式框中,双击下方的“语文”字段,然后输入+,再双击“数学”,再输入+,最后双击“英语”(也可直接手动输入)。
公式最终看起来像这样:

=[语文]+[数学]+[英语]

点击“插入列”,新的“总分”列就创建好了。
M函数原理:
这个操作在后台生成了Table.AddColumn函数,它的作用就是基于现有列求和计算新列。
简单的场景(二):
有一列“重量”数据,格式是“5kg”、“20kg”...,我们想删除末尾的单位,只保留里面的纯数字部分,方便后续进行数值计算。
同样点击“自定义列”。
新列名:输入“新重量”。
自定义列公式:输入以下M函数:

= Number.From(Text.Replace([重量], "kg", ""))

Text.Replace([重量], "kg", "")
把“重量”列里的“kg”字替换成空,比如“5kg”变成“5”。
Number.From( ... )
把上一步得到的文本“1”转换成数字1,方便计算。
M函数原理:
这里用到了文本处理函数(Text.Replace) 和数值转换函数(Number.From),展示了M函数处理文本和转换数据类型的强大能力。
简单的场景(三):
想快速生成一列从1到n的、能自适应行数的序号序列。
同样点击“自定义列”。
新列名:输入“序号”。
自定义列公式:输入以下M函数:

= Table.AddIndexColumn(源, "序号", 1, 1)

源:代表当前步骤中的数据表。
序号:我们希望创建的新列的名称,可以按需修改。
第一个1:序号的起始值。
第二个1:序号的步长,即每次增加的值。
此时,通过M函数得到一列“Table”值。
需要鼠标靠近“Table”值,当鼠标箭头变成一个小手的图标时,单击一下,格式立刻变成一列序号:
简单的场景(四):
想根据“语文”是否及格,大于等于60分,新增一列“是否及格”来标记。
这是最基础的条件判断M函数,效果和用添加“条件列”按钮完全一样。
M函数公式:
= if [语文] >= 60then"及格"else"不及格"
if:开始条件判断。
[语文] >= 60:这是你的条件。
then "及格":如果条件为真,则返回“及格”。
else "不及格":如果条件为假,则返回“不及格”。

(如果您觉得本文对自己有所启发,希望点一个“推荐”鼓励小编;如果您还有其它方面的问题,可后台消息框回复“提问”进行咨询)

学习Excel/你可以不常用/但不能不会用/如果你没有天赋/那就一直重复/当你快到本能反应的时候/你的重复就是别人眼中的天赋/冲破捆绑/展翅翱翔

map遍历scan遍历reduce迭代

pivotby降维byrow函数let函数

pivotby函数groupby函数

makearraymakearray

Excel视频大全①/Excel视频大全②

数据转换大全/Excel大全/正则大全