Lazy loaded imageEP014:Power Query (M语言) 中,如何从三大核心容器(列表、记录、表)中获取数据(钻取)?

type
Post
status
Published
date
Nov 22, 2025
slug
EP014
summary
tags
财务bp
PowerBI
Power Query
数据分析
可视化图表
老汪洞察
category
699课程讲义
icon
password
notion image

(本文3000字,阅读需要8分钟左右)
今天以下表来给大家开启M函数的第一节正课:在Power Query(M语言)中,如何从三大核心容器(列表、记录、表)中获取数据(钻取)。
notion image
进入Power Query编辑器后台进行以下操作,在公式栏里输入下面的代码,亲自体验一下“指哪打哪”的感觉:
notion image

1. 基础取值:取“整列”和“整行”

  • 取“姓名”这一整列 (List)
    • 符号:[ ] (中括号取列)
    • 代码= 源[姓名]
    • 结果:得到一个列表 { "张三", "李四", "王五" }。
    • 直观理解:就像把 Excel 的 A 列单独拿出来,变成了一个清单。
  • 取“第一行”这一整条记录 (Record)
    • 符号:{ } (大括号取行,注意下标是从0开始)
    • 代码= 源{0}
    • 结果:得到一条记录 [ 姓名="张三", 年龄=30, 班级="二班", ... ]。
    • 注意:虽然界面左边显示的是 1,但在 M 函数里,第一行永远是 0

2. 坐标定位:取具体的“单元格”

比如我们要取 第二行(李四)的年龄(35)。这就是我们在 Excel 里常说的 B2 单元格的值。这里有两种走法,结果一模一样:
  • 走法 A:先取行,再取列 (推荐,逻辑更顺)
    • 代码= 源{1}[年龄]
    • 解读:先找到下标为 1 的行(也就是李四那一行记录),再从这行记录里拿出 [年龄] 字段。
    • 结果:35
  • 走法 B:先取列,再取行
    • 代码= 源[年龄]{1}
    • 解读:先拿到 [年龄] 这一整列数据(变成一个列表),再从这个列表里拿第 2 个数。
    • 结果:35

3. 精准取值(不依赖行号)

这是最有价值的一点!假设你想知道 “王五” 的班级,但你担心明天数据刷新后,王五可能不在第 3 行了。这时候千万别用 {2}。
  • 场景:查找“姓名”是“王五”的那一行,取出他的“班级”。
  • 代码= 源{[姓名="王五"]}[班级]
  • 解读
      1. 源{[姓名="王五"]}:这部分就像 Excel 的 VLOOKUP。意思是:去 源 表里找,找到那个 [姓名] 字段等于 "王五" 的记录(Record)。
      1. ... [班级]:从找到的那条记录里,提取 [班级] 的值。
  • 结果:"六班"
  • 优势:无论王五跑到第几行,只要他叫王五,这个公式永远能抓到他的班级!

4. 多层嵌套取值(套娃模式)

把这个表在Excel打开后,选择“数据”,“来自表格/区域”,然后再看Power Query的公式编辑栏,就可以见到已经展示了一个绝佳的“多层嵌套”案例!
notion image
请看你截图中最上面的公式:
= Excel.CurrentWorkbook(){[Name="表1"]}[Content]
我们来像剥洋葱一样拆解它,看看它是怎么拿到你眼前这张表的:
  1. 第一层Excel.CurrentWorkbook()
      • 这会抓取当前 Excel 文件里所有的表。结果是一个大列表(包含很多张表的信息)。
  1. 第二层{ [Name="表1"] }
      • 这是在取行(精准取值)。它在那个大列表里寻找:名字叫 "表1" 的那一行记录。
  1. 第三层[Content]
      • 这是在取字段。它取出了那行记录里名为 Content 的内容。而这个内容,恰恰就是你看到的这张具体的二维表!
如果要来个终极套娃,取这张表里“张三”的名字,代码连起来就是:
= Excel.CurrentWorkbook(){[Name="表1"]}[Content]{0}[姓名]
  • Excel.CurrentWorkbook() -> 抓所有对象
  • ...{[Name="表1"]} -> 锁定表1这条记录
  • ...[Content] -> 拿出里面的表数据
  • ...{0} -> 拿这张表的第一行(张三的记录)
  • ...[姓名] -> 拿这条记录的姓名

5.与从3大容器取值相关的FAQ问题

 

如果本篇文章对您有帮助或启发,请帮我们点赞、转发、推荐、关注,让更多想转型财务BP、锻造数据分析和可视化洞察能力的财务同行们看到,关注【老汪洞察】,不迷路!
若想获得更多制造业成本本管控、核算、全面预算、业财融合方面的落地实操干货,加入我们的大本营是你的不二之选,快点击下方卡片看看吧!
温馨提示
🙏🏻
如果您不想错过【老汪洞察】的文章,请将我们设为"星标",这样每次最新文章推送才会第一时间出现在您的订阅列表里。 方法:点击文章页面左上角蓝色文字“老汪洞察”进入主页,点击关注后,再点主页右上角"...",然后选择"设为星标",即可完成,感谢您的支持。
 
上一篇
完全免费、无需编程基础,使用 Notion + GitHub + Vercel 来搭建网站(博客)的教程。
下一篇
EP14-001:FAQ 001:Power Query (M语言) 中,[]和{}在不同场景下两种用法
Loading...
文章列表
让财税成为经营的力量
管理报表
从Power Query到Power BI,入门到精通
699课程讲义
VBA小工具
电脑与网络
知识运用