说起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函数。
我们有一张成绩表,包含“语文”、“数学”、“英语”3列,想快速算出每位学生的“总分”。自定义列公式:在公式框中,双击下方的“语文”字段,然后输入+,再双击“数学”,再输入+,最后双击“英语”(也可直接手动输入)。=[语文]+[数学]+[英语]
这个操作在后台生成了Table.AddColumn函数,它的作用就是基于现有列求和计算新列。有一列“重量”数据,格式是“5kg”、“20kg”...,我们想删除末尾的单位,只保留里面的纯数字部分,方便后续进行数值计算。= Number.From(Text.Replace([重量], "kg", ""))
Text.Replace([重量], "kg", ""):把“重量”列里的“kg”字替换成空,比如“5kg”变成“5”。这里用到了文本处理函数(Text.Replace) 和数值转换函数(Number.From),展示了M函数处理文本和转换数据类型的强大能力。想快速生成一列从1到n的、能自适应行数的序号序列。= Table.AddIndexColumn(源, "序号", 1, 1)
需要鼠标靠近“Table”值,当鼠标箭头变成一个小手的图标时,单击一下,格式立刻变成一列序号:想根据“语文”是否及格,大于等于60分,新增一列“是否及格”来标记。这是最基础的条件判断M函数,效果和用添加“条件列”按钮完全一样。= if [语文] >= 60then"及格"else"不及格"then "及格":如果条件为真,则返回“及格”。else "不及格":如果条件为假,则返回“不及格”。(如果您觉得本文对自己有所启发,希望点一个“推荐”鼓励小编;如果您还有其它方面的问题,可后台消息框回复“提问”进行咨询)
学习Excel/你可以不常用/但不能不会用/如果你没有天赋/那就一直重复/当你快到本能反应的时候/你的重复就是别人眼中的天赋/冲破捆绑/展翅翱翔