M语言之在【自定义列】中编写M公式 2024-08-01 12:42:12 有时需要在查询表中添加一些包含特定计算规则的列,以下M公式可以实现:只是“徒手”写这样的M公式太难为初学者,这时可以通过使用【自定义列】功能,仅编辑指定的“计算规则”部分,而其他部分则任由“异空间”自动生成。例如,“文档”文件夹中有一个叫“04-数据源.xlsx”的工作簿(素材:04-数据源.xlsx),新建一个Excel工作簿以后,依次选择【数据】选项卡下的【获取数据】→【来自文件】→【从工作簿】选项,定位目标文件,将其导入。在【导航器】里选择“Sheet1”以后单击【转换数据】按钮。如此一番“折腾”进入“异空间”,就可以看到一个只包含“品名”“数量”“单位”和“单价”4列数据的查询表,如图4-3所示。现在需要在查询表中添加一个“打折单价”列,计算规则是在“单价”列的基础上乘以 0.8,可以如图 4-4 所示,使用【添加列】选项卡下的【自定义列】功能。但是,【自定义列】对话框里的自定义列公式(M公式)无法自动生成,只能在对话框里手工输入。将光标移到等号后,输入以下公式:其中的“[单价]”即是对“单价”列数据的引用,可以手工输入,也可以通过双击【可用列】里的“单价”写入,“*0.8”只能手工输入。再修改【新列名】为“打折单价”,然后单击【确定】按钮,新的“打折单价”列就会依据M公式所设置的计算规则出现在查询表的最后一列。要点提示:自定义列【Power Query编辑器】→【添加列】→【自定义列】→修改新列名→编写自定义M公式→【确定】添加自定义列以后,自动生成的步骤名叫“已添加自定义”。如此笼统的叫法完全无法体现这一步骤的实际意义,将其重命名为“添加打折列”才更符合规范操作的要求。重命名的方法很简单,只要右击“已添加自定义”步骤,调出快捷菜单,再选择其中的【重命名】选项,输入新的步骤名后按【Enter】键即可,如图 4-5 所示。由于M公式千变万化,使得【自定义列】所能实现的效果也精彩纷呈,前几章介绍的所有添加列的功能都可以用【自定义列】来实现。例如,想把“品名”列里的第一个字都提取出来作为“品名简称”,就可以在【自定义列】里使用M函数“Text.Start”,它的功能是对目标列的内容从左往右提取指定个数的字符。在【自定义列】对话框中输入函数名的时候,会有函数名提示框出现,利用上下键选取需要输入的那个函数,再按【Enter】键或【Tab】键,完整的函数名就会自动填写,如图 4-6 所示。再输入一个半角的左小括号以后,还会有参数的提示窗格出现。如果对这个函数的用法不是太熟悉,可以借助这一提示窗格填写参数,如图 4-7 所示。由此提示窗格可以看出,M函数“Text.Start”有两个参数,第一个参数是需要提取内容的目标列,双击【可用列】里的“品名”即可;第二个参数是要提取出几个字符,此处填写 1。参数之间以半角逗号分隔。参数输入完成后不要忘了还有一个半角的右小括号。当然,不借助提示窗格功能,直接手工完成函数名与参数的输入也可以。但是,这样做的话很可能会出现拼写错误。如图 4-8 所示,公式输入完成以后,对话框的左下角虽然显示“未检测到语法错误”,然而单击【确定】以后却提示“无法识别名称 'text.start'。请确保其拼写正确”。“text.start”拼写不正确吗?确实不正确,因为M语言是一种区分字母大小写的语言,正确的拼写是“Text.Start”。在编辑M语言时,尤其是直接敲键盘编辑时,“异空间”不会自动修正大小写,所以需要特别注意这一点。对于一些M函数名和参数,不能确定其大小写的,还是借助提示窗格输入更保险。 赞 (0) 相关推荐 认识Power Query的自定义函数 使用Power Query进行复杂一些的数据处理,离不开M函数,目前已经有超过700个函数了,基本上各式各样的数据处理需求都可以使用M函数实现,如果你觉得这些还不够,或者使用起来不是很方便,也可以在P ... PQ-M及函数:对比Excel,一次搞定5个最常用的文本函数 小勤:大海,最常用的文本类处理函数给我讲讲呗. 大海:好的,在PowerQuery里,文本类函数可能用得比数值计算函数还要多.这里我们通过和Excel里的常用文本处理函数进行对比的方式来学,可能会效果 ... PQ基础-数据转换5:添加简单自定义列 在Power Query中,添加自定义列一般涉及到函数的使用,其实就跟Excel中在一个新的列里写公式一样,本文通过一个简单的例子,先说明怎样添加自定义列,以及如何对自定义列编写公式.数据如下: 要求 ... PQ 第三期 | M函数基础及上下文详解 这是我们PQ第三期,讲完本期,基础基本就毕业了,后面可能会对一下难点函数讲解! M函数中由于没有单元格概念,我们第二期所讲,基本是"列操作",整理公式完全一样,那么为什么出来的结果 ... PQ-综合实战:根据关键词匹配查找对应内容 今天的文章有点儿长,步骤有点儿多,但这个综合操作很值得练好,以后扩展应用的空间很大. 小勤:大海,公司现在要对产品根据关键词进行分类,有位大神写了个公式,不是很复杂,但基本效果实现了: 大海:嗯.这个 ... “我面试了几十个大学生,发现他们竟然还在用分列法拆分数据,难怪效率那么低……” 每天一点小技能 职场打怪不得怂 编按:在日常办公中,我们难免会收到不按规范录入的数据表,所以拆分单元格重置数据源就成了Excel人必会的办公技能之一,其中分列法更是最受欢迎的技巧之一.可是,今天小E讲 ... 为什么我十分喜欢C却很不喜欢C(尽管你可以在 Excel 中编写光线追踪程序但最好还是使用其他语言) (尽管你可以在 Excel 中编写光线追踪程序但最好还是使用其他语言) https://m.toutiao.com/is/eXb3Ueb/ 以下为译文: 为什么说C不是最好的语言? 首先,这个世上没有 ... Excel怎么突出显示某个数在列中首次出现的位置 如图所示,Excel里怎么查找一个数据列里的某一个值第一次出现? 先在辅助列中输入公式=MATCH(A1,$A$1:$A$12,0)=ROW(A1),向下填充. 注意:如果是第一次出现的,利用MATC ... 【竺】Fiddler学习笔记2——自定义列 在平时日常工作中,使用Fiddler的占比还是蛮大的.使用过程,也会遇到一些小问题,问题虽小,但抓不到包,分析不了问题与数据,那也是件麻烦的事情. 以前也分享过一些小技巧,可以找以前的博文查看,具体地 ... 如何每3列中同一行只允许一个单元格中能输入数据? Q :工作表同一行中每三个单元格同时只能有一个单元格显示数据.如下图1所示,在单元格区域B6:D6中,如果在单元格B6中输入了数据,那么单元格C6和D6中的内容就会被清除:如果在单元格C6中输入的数据 ... 恭喜上港!U23有新发现,两数据暂列中超第一,三王牌秒变他替补 上海海港主帅莱科在接手球队之后,一直对外宣称要重用新人.为此球队在赛季开打前的多场热身赛中,莱科给了聂孟.李申圆.陈纯新等多名新人连续踢首发的机会.上海海港球迷原本认为新赛季冒头的新星,将从聂孟.李申 ... C语言编程第27讲安装编写第一个Qt程序 https://m.toutiao.com/is/eBRV5wx/ 编写了好多年的C/C++程序,但之前要么是在Linux/UNIX环境中用Makefile的方式生成命令行的程序,要么使用微软的V ... EX-函数应用:提取一列中最后单元格的数据 针对在Excel中提取一列中最后单元格的数据问题,根据不同情况,可以用来很多方法来解决.比如数据从1行开始,且中间没有空行的,可以直接用Offset和Count等函数简单组合得到,但是,数据没有那么规 ... DAX入门-明明是个数值,为什么还说是文本?又怎么识别出一列中哪些是数值? 小勤:这个数据明明是个数值啊,为什么用函数ISTEXT判断的时候,结果还是TRUE?也就是说这个还是文本? 大海:那你这一列不就是文本的格式吗? 小勤:ISTEXT函数难道不是用来判断哪个是真正的文本 ...