如果你已经能用 Power Query 的界面把几张表合并、透视、拆列,却总在遇到「这个转换界面里根本找不到」的需求时卡住,那这门课针对的就是你现在的状态。M 代码高级篇不讲怎么点按钮,它讲的是按钮背后那行代码到底在干什么,以及当图形界面给不了你想要的结果时,怎么自己写。
先确认一下你的缺口在哪
Power Query 有个很典型的分水岭:会拖界面的人很多,能改 M 代码的人很少。下面这些场景,如果你有两条以上只能靠手工绕过去,说明缺口已经存在了。
- 合并查询后列名变成
Table.Column1这类怪名字,只能手动一列列改回去,下次刷新又乱。 - 需要按分组内部的条件筛选(比如每组取最新一条、取累计占比达到某比例的行),界面里的筛选器做不到。
- 参数化的查询写不出来,想换一个数据源路径或日期区间就得重做一遍步骤。
- 自定义函数不会写,同样的清洗逻辑在十几个查询里复制粘贴,改一处要改十几处。
- 看到「查询折叠」这个词知道重要,但说不清自己的步骤有没有把折叠能力破坏掉。
这些问题的共同点是:它们都发生在「界面能表达的范围之外」。这门课正是从这里切入。
M 语言在这门课里被拆成什么
M 不是一门要从头学语法的通用编程语言,它更像一套数据变换的表达式规则。课程在这条线上主要处理几件事:
一是值、列表、记录、表这几种核心结构之间的关系。很多写不出来的公式,本质是没搞清楚当前拿到的是表还是列表,是记录还是单个值。搞清楚之后再写 Table.TransformColumns、List.Accumulate 这类函数,就不会靠猜参数。
二是 let 表达式与步骤的本质。界面上每一步其实都是 let 里的一行赋值,理解这一点之后,你就敢直接删步骤、调顺序、把中间结果抽出来复用,而不是被「步骤名不能重复」这类限制绑住。
三是自定义函数与错误处理。把一段清洗逻辑封装成函数,是 Query 从「一个人用」变成「一套流程」的关键。课程会涉及函数的结构、参数传递,以及 try / otherwise 这类兜底写法——数据源里有脏值时,报错停下来往往不是最好的选择。
四是性能相关的那部分判断力:什么样的步骤组合还能下推到数据源执行,什么样的写法会把整张表拉到本地再算。
怎么练才算真的会了
M 代码这门东西,只看不写等于没学。建议每看完一节,回到自己的真实数据上重做一遍,哪怕数据只有几十行。
- 把手上正在用的某个查询,用纯代码的方式重写一遍,不碰界面按钮。
- 挑一个重复了三遍以上的清洗动作,改造成自定义函数并调用。
- 找一张带空值和异常值的数据,练习用错误处理让它跑完而不是中断。
- 给一个查询加上参数,做到换日期区间不需要动任何步骤。
每完成两三节,用几句话写下「这一步解决的问题是什么、换个场景还成不成立」,比抄笔记有用得多。
学完之后你应该能回答
用这几个问题自测,答不上来就回去补对应章节:
- 界面上的每一个操作,对应的 M 代码大致长什么样?
- 什么时候该用列表函数,什么时候该用表函数,判断依据是什么?
- 自定义函数的参数该怎么设计,才能让它在不同查询里复用?
- 查询折叠在什么情况下会失效,我该怎么避免?
- 面对一个从没做过的转换需求,我怎么判断它能不能在 Power Query 里完成?
如果你的工作里 Excel 承担了大量重复的数据整理,而你已经不满足于点按钮,这门课值得按顺序过一遍。别跳着看,M 代码的坑大多埋在前面几节的基础概念里。
这是一套由曾贤志主讲的Power Query进阶课程,专为Excel高手打造。通过学习,你将掌握M语言高级技巧,提升数据分析能力。
课程推荐
《【曾贤志】Power Query For Excel数据处理利器(第3季 M代码高级篇)》这是一套由曾贤志主讲的Power Query进阶课程,专为Excel高手打造。通过学习,你将掌握M语言高级技巧,提升数据分析能力。【技能收获】学完可掌握:Power、Query、Excel、M代码、数据处理。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已有一定编程或运维基础,本课程可帮助你在现有技能栈上快速叠加热门方向能力,提升求职时的项目说服力与薪资谈判空间。
视频目录(97 节)
* 1-1 1.1 动态合并指定表格数据(表格法).mp4
* 1-2 1.2 动态合并指定表格数据(定义名称法).mp4
* 1-3 1.3 自动多表合并(数据源表与结果表在相同工作簿).mp4
* 1-4 1.4 自动多表合并(数据源表与结果表在不同工作簿).mp4
* 1-5 1.5 自动多表合并(数据源表字段不定).mp4
* 1-6 1.6 获取txt与csv文本数据(Csv.Documen).mp4
* 1-7 1.7 获取XML格式数据(Xml.Tables).mp4
* 1-8 1.8 获取JSON格式数据(Json.Document).mp4
* 1-9 1.9 获取指定目录下的文件数据(Folder.Files).mp4
* 2-1 交替提取列表值List.Alternate.mp4
* 2-2 查找列表中的关键字元素List.FindText.mp4
* 2-3 按条件提取列表元素List.First与List.First.mp4
* 2-4 按条件提取列表元素List.Last与List.LastN.mp4
* 2-5 增加列表元素List.InsertRange.mp4
* 2-6 列表唯一性判断List.IsDistinct.mp4
* 2-7 判断列表元素是否满足条件(与、或).mp4
* 2-8 活该你单身List.Single.mp4
* 2-9 列表也玩跳一跳List.Skip.mp4
* 2-10 列表删除系列函数.mp4
* 2-11 列表重复函数List.Repeat.mp4
* 2-12 列表替换函数.mp4
* 2-13 列表替换函数2- List.ReplaceValu.mp4
* 2-14 列表删除函数之按条件删除.mp4
* 2-15 高级列表转换函数List.TransformMan.mp4
* 2-16 列表中的and、or多条件判断.mp4
* 2-17 列表多条件判断List.Contains系列函数.mp4
* 2-18 定位指定列表元素的位置List.PositionOfAny.mp4
* 2-19 列表反转List.Reverse.mp4
* 2-20 返回两个列表的不同元素List.Differenc.mp4
* 2-21 返回多个列表的相同元素List.Intersect.mp4
* 2-22 返回多个列表的所有元素List.Union.mp4
* 2-23 求列表的最大值、最小值.mp4
* 2-24 根据条件统计列表的最大值、最小值.mp4
* 2-25 自定义序列值List.Numbers.mp4
* 2-26 按条目数拆分列表(List.Split).mp4
* 3-1 提取Record记录和记录值.mp4
* 3-2 提取Record记录信息.mp4
* 3-3 Record记录合并与转换.mp4
* 3-4 Record记录与表格的互转.mp4
* 3-5 Record记录与列表的互转.mp4
* 3-6 Record记录重命名与重新排列.mp4
* 3-7 Record记录的新建与删除.mp4
* 4-1 Table表列的计数与空表判断.mp4
* 4-2 统计Table表格各列信息.mp4
* 4-3 Table表格的偏移、删除、保留.mp4
* 4-4 Table表格各列关键字筛选.mp4
* 4-5 从头获取Table表格数据.mp4
* 4-6 从尾获取Table表数据.mp4
* 4-7 按条件删除Table表记录.mp4
* 4-8 Table表的多条件判断.mp4
* 4-9 按条件分割Table表函数Table.Partition.mp4
* 4-10 反转表格行记录Table.ReverseRows.mp4
* 4-11 按指定条数拆分表格(Table.Split)实例.mp4
* 4-12 强大到令人发指的分组函数Table.Group.mp4
* 4-13 查询表求唯一值Table.Distinct.mp4
* 4-14 查询表定位Table.PositionOf.mp4
* 4-15 查询表的删除行与替换行.mp4
* 4-16 查询表求最大、最小、排序.mp4
* 4-17 查询表的查找替换(Table.ReplaceValue).mp4
* 4-18 按行替换实例(Table.ReplaceRows).mp4
* 4-19 转换查询表行(Table.TransformRwos).mp4
* 4-20 重复查询表(Table.Repeat).mp4
* 4-21 重新排列和重命名查询表字段.mp4
* 4-22 查询表列的选择、删除操作.mp4
* 4-23 转换查询表的标题名称.mp4
* 4-24 添加索引列(Table.AddIndexColumn).mp4
* 4-25 升级版最大值与最小值(Table.MaxN、Table.mp4
* 4-26 聚合函数Table.AggregateTableColum.mp4
* 4-27 对查询查表指定列的填充.mp4
* 5-1 日期的建立、拆分、转换.mp4
* 5-2 不同日期单位的开始与结束日期提取.mp4
* 5-3 不同日期单位增减.mp4
* 5-4 指不同日期单位中的某一天.mp4
* 5-5 以当前系统日期为基准的日期判断函数.mp4
* 6-1 日期时间的建立、拆分、转换.mp4
* 6-2 以当前系统时间为基准的时间判断函数.mp4
* 6-3 时间的建立、拆分、转换.mp4
* 6-4 持续时间函数应用.mp4
* 7-1 计算文本型表达式(Expression.Evalua.mp4
* 8-1 将JS语言写入Power Query.mp4
* 8-2 正则表达式之普通字符应用.mp4
* 8-3 正则表达式之特殊字符应用.mp4
* 8-4 正则表达式之量词匹配.mp4
* 8-5 正则表达式之“或”应用.mp4
* 8-6 正则表达式之分组应用.mp4
* 8-7 正则表达式之非捕获分组应用.mp4
* 8-8 正则表达式之边界应用.mp4
* 8-9 正则表达式之正则对象测试应用.mp4
* 8-10 正则表达式之替换应用.mp4
* 9-1 获取Table格式的数据.mp4
* 9-2 获取JSON格式的数据.mp4
* 9-3 获取XML格式的数据.mp4
* 9-4 获取其它格式的数据.mp4
* 9-5 获取GET提交方式的数据.mp4
* 9-6 获取POSET提交方式的数据.mp4
* 9-7 获取需要用户登录方式的数据(GET).mp4
* 9-8 获取需要用户登录方式的数据(POST).mp4




