Power Query M语言入门:Excel里的"新编程小伙伴"
- 2026-09-22 10:59:56
持续学习,共同成长
🔍 Excel中的M语言藏在哪里?
想象一下,Excel里住着两位"编程小伙伴":
VBA老大哥:住在开发者工具栏里,爱管整个Excel
M语言小鲜肉:藏在数据菜单里,专门负责数据整理
找到M语言编辑器的步骤:
点击Excel的 "数据" 选项卡
找到 "获取和转换数据" 区域
从任何数据源导入数据(比如"从表格")
Power Query编辑器弹出后 → 点击 "高级编辑器" 按钮

温馨提示:如果你的Excel没有Power Query,可能需要Office 365或Excel 2016以上版本哦!
⚔️ M语言 vs VBA:新一代与老前辈的较量

打个比方:
VBA像是全能管家,什么都能干但得详细吩咐
M语言像是专业厨师,专门把乱糟糟的食材做成美味佳肴
📦 M语言的基本结构:一个神奇的"三步魔法"
M语言的核心结构简单到令人发指,就三步:
let// 第一步:准备材料(定义变量)鸡蛋 = 2,面粉 = 200,糖 = 50,// 第二步:加工处理(数据转换)面糊 = 鸡蛋 + 面粉 + 糖,蛋糕 = 面糊 * "烘烤魔法"in// 第三步:上菜!(返回结果)蛋糕
更接地气的例子:计算奶茶订单
假设你在奶茶店打工,要算订单总价:
let// 1. 定义原始数据珍珠奶茶单价 = 15,布丁奶茶单价 = 18,珍珠奶茶数量 = 3,布丁奶茶数量 = 2,// 2. 开始计算珍珠奶茶小计 = 珍珠奶茶单价 * 珍珠奶茶数量, // 45元布丁奶茶小计 = 布丁奶茶单价 * 布丁奶茶数量, // 36元订单总价 = 珍珠奶茶小计 + 布丁奶茶小计 // 81元in// 3. 告诉收银员结果订单总价
你看懂了吗?
let后面:列出所有需要的东西in前面:对这些东西进行加工in后面:拿出最终成品

点击完成试试看,结果为81,手动算算结果是不是就该是81呢?

🎯 真实Excel场景:从零写一个M查询
场景:统计销售奖金
假设你是销售经理,要计算团队奖金:
基本奖金:销售额的5%
超额奖励:超过1万的部分再加2%
在Excel中实际操作:
新建查询:

let销售额 = 12500, // 张三的销售额基本奖金 = 销售额 * 0.05,超额部分 = if 销售额 > 10000 then 销售额 - 10000 else 0,超额奖金 = 超额部分 * 0.02,总奖金 = 基本奖金 + 超额奖金in总奖金看下结果

更实用的表格处理:
通过以上的案例我们了解了M语言的基本的结构,显示中我们的数据大多来源于表格,那我们如何通过M代码创建一个表并按上述规则计算出奖金结果呢?
let// 1. 创建销售表格销售数据 =#table({"销售员", "销售额"},{{"张三", 12500},{"李四", 8900},{"王五", 15000}}),// 2. 添加计算列添加基本奖金 = Table.AddColumn(销售数据, "基本奖金", each [销售额] * 0.05),添加超额部分 = Table.AddColumn(添加基本奖金, "超额部分",each if [销售额] > 10000 then [销售额] - 10000 else 0),添加超额奖金 = Table.AddColumn(添加超额部分, "超额奖金", each [超额部分] * 0.02),添加总奖金 = Table.AddColumn(添加超额奖金, "总奖金",each [基本奖金] + [超额奖金]),// 3. 清理中间列(可选)最终结果 = Table.SelectColumns(添加总奖金, {"销售员", "销售额", "总奖金"})in最终结果
看下结果:

通过点击右边的查询设置可以看到每一步对应的代码:

这节课我们只感受M代码的结构,下节课解释下这个代码的具体意思,不用着急,一步步学习。
🚀 为什么M语言这么友好?
对比VBA的相同功能:
VBA版本(大概需要20行):
Sub 计算奖金()Dim 销售额 As DoubleDim 基本奖金 As Double'...一堆声明和循环...End Sub
M语言版本(上面已经看到了,更简洁)
M语言的"懒人福利":
不用声明类型:
销售额 = 12500就行,不用管是整数还是小数一步到位:不像VBA要写完整的Sub...End Sub
所见即所得:每一步都能在预览窗口看到结果
不怕报错:写错了会有明确提示,不会让Excel崩溃
💡 新手快速上手技巧
练习1:试试这个"买菜计算器"
let白菜单价 = 3.5,土豆单价 = 2.8,白菜重量 = 1.5, // 斤土豆重量 = 2.0,白菜价格 = 白菜单价 * 白菜重量,土豆价格 = 土豆单价 * 土豆重量,总价 = 白菜价格 + 土豆价格,抹零后 = Number.Round(总价, 0) // 四舍五入到整数in"总共:" & Text.From(总价) & "元,抹零后" & Text.From(抹零后) & "元"
练习2:进阶挑战 - 判断成绩等级
let分数 = 85,等级 = if 分数 >= 90 then "优秀"else if 分数 >= 80 then "良好"else if 分数 >= 60 then "及格"else "不及格",评语 = 分数 & "分,等级为:" & 等级in评语
📚 下一步学习建议
先在高级编辑器里玩:修改数字,看看结果怎么变
从界面操作开始:在Power Query界面点按钮,然后看生成的M代码
记住核心公式:
let ... in ...就是全部别怕报错:M语言的错误提示比VBA友好多了!
🎉 总结一下
M语言就像做菜:
let = 准备食材
中间步骤 = 切菜、炒菜
in = 装盘上菜
相比VBA这位"严肃的老管家",M语言更像是个"贴心小助手":
它只专心做好一件事:处理数据
语法简单到像在写购物清单
在Excel的数据菜单里就能找到
现在就去Excel里试试吧! 打开"从表格",随便选个区域,点击"高级编辑器",开始你的第一个M语言之旅!
记住:学M语言不是为了成为程序员,而是为了让Excel数据清洗不再痛苦!😊
本节课练习文件下载链接:
链接:https://pan.quark.cn/s/3378a70e797b