更新于 2026-07 · 作者:汪斌(老汪),制造业财务实战 · Excel BI(Power Query / Power Pivot / CUBE)
系列:Excel BI 财务建模实战课讲义(第二阶段)· Power Query / M 语言 · List
SEO focus:List.Select
SEO 关键词:List.Select,List.Skip,Power Query,M语言,列表筛选,Record.ToList,多列求和,财务BP,Excel BI,经营分析
直接答案(TL;DR)
List.Select 按条件从列表筛出新列表;List.Skip 跳过前 N 个元素。财务BP面对「产品编码 + 多车间产量」宽表时:行转记录 → Record.ToList → List.Skip(..., 1) 去掉编码 → List.Sum,不必手写上百个字段名。
学完 EP028 能独立完成哪三件事?
- 用
List.Select写单条件 /or/and筛选。 - 用
List.Skip(列表, n)跳过前 n 个。 - 用「记录 → 列表 → Skip 首列 → Sum」做一行多度量合计。
为什么财务BP要同时会 Select 和 Skip?
EP026 排名已经用过 List.Select(筛「比我大的贡献额」)。本课把它讲透,并补上 Skip:宽表一行里既有文本键(产品编码),又有一长串数字列时,先 Skip 掉键,剩下才能安全 List.Sum / List.Average。
List.Select 怎么用?(含 and / or)
空白查询里可直接试:
List.Select({19, 91, 98, 18, 5}, each _ < 50)
返回 {19, 18, 5}。each _ = 列表里每一个元素(表里 each 常指每一行)。
| 场景 | 写法 |
|---|---|
| 单条件 | each _ < 50 |
| 或 | each _ < 50 or _ > 98 |
| 且 | each _ > 25 and _ < 100 |
判断奇偶可嵌套 Number.IsOdd / Number.IsEven(本课点到为止)。文本「姓孙」类筛选,后续 Text 课再展开。
List.Skip 怎么用?
List.Skip({1, 2, 3, 4, 5}, 3)
返回 {4, 5}:跳过前 3 个。
另有「按条件跳过」:跳过所有「开头仍满足条件」的元素,直到条件不再成立——语义是 Skip(跳过),不要理解成「取出」。本课主交付用 跳过固定个数。
华凯精工案例:多车间产量一行求和
场景:财务BP要从「产品 × 车间产量」宽表算总产量,车间列可能增到几十上百列,不能靠手写字段名。
示例(教学合成):
| 产品编码 | 一车间 | 二车间 | 三车间 | 四车间 |
|---|---|---|---|---|
| P-A | 70 | 65 | 80 | 81 |
| P-B | 55 | 60 | 72 | 68 |
| P-C | 40 | 45 | 50 | 48 |
P-A 总产量期望 = 70+65+80+81 = 296。
多车间合计在 Power Query 里怎么一步步做?
步骤 0:导入,删「更改的类型」(可选)
方便公式锚定 源。
步骤 1:添加自定义列「总产量」
核心思路四步套娃:
List.Sum(
List.Skip(
Record.ToList(_),
1
)
)
| 层 | 作用 |
|---|---|
_ |
当前行(记录) |
Record.ToList(_) |
整行变成列表:{"P-A", 70, 65, 80, 81} |
List.Skip(..., 1) |
跳过第 1 个(产品编码) |
List.Sum |
对剩余数字求和 |
完整列:
Table.AddColumn(
源,
"总产量",
each List.Sum(List.Skip(Record.ToList(_), 1))
)
步骤 2:自检
点开「总产量」旁列表预览:Skip 后应只有数字;P-A = 296,P-B = 255,P-C = 183。
和 List.Range 怎么选?
| 需求 | 更合适 |
|---|---|
| 取「从开头连续 N 个」再合计(累计) | List.Range(EP027) |
| 丢掉前 N 个键列,对其余求和 | List.Skip(本课) |
| 按条件留下元素 | List.Select |
宽表首列是文本、后面全是数字 → 优先 Skip(1),不必数「一共几列再 Range」。
操作自检:案例与公式能否一一对上?
自检结论(2026-07-23):PASS。
| 演示 | 输入 | 期望输出 |
|---|---|---|
| Select | {19,91,98,18,5} 且 _ < 50 |
{19,18,5} |
| Skip | {1,2,3,4,5} 跳过 3 |
{4,5} |
| P-A 总产量 | Skip 编码后 Sum | 296 |
| P-B 总产量 | 同上 | 255 |
| P-C 总产量 | 同上 | 183 |
上会前财务BP要自检哪三项?
- Skip 的个数是否等于「非数值键列」个数(只有编码 → 1;若还有产品线名称 → 2)。
- Skip 后列表里是否还有文本(有则 Sum 会报错或得到错误值)。
- 新增车间列后是否无需改公式(这正是本课价值)。
读者常问 AI 的问题有哪些?(FAQ)
List.Select 和表筛选有什么区别?
表筛选作用在行;List.Select 作用在一维列表。排名套娃、列转列表后再处理时用 List 版。
为什么必须先 Record.ToList?
each _ 在添加列里是记录。Sum/Skip 吃的是列表,所以先 Record.ToList。
能不能 Skip 掉最后一列?
List.Skip 跳的是前缀。丢后缀用 List.RemoveLastN 或先 List.Reverse 再 Skip(进阶)。
和 EP026 排名里的 Select 是同一个函数吗?
是。EP026 用它筛「更大的贡献额」;本课把它系统讲清,并补上 Skip 宽表求和。
车间列中间夹了文本备注列怎么办?
先把备注列删掉或移到末尾再 Skip;或 Select 只保留数字类型——否则 Sum 不安全。
本课公式速查表在哪里?
List.Select(列表, each _ < 50)
List.Select(列表, each _ < 50 or _ > 98)
List.Select(列表, each _ > 25 and _ < 100)
List.Skip(列表, 3)
List.Sum(List.Skip(Record.ToList(_), 1))
文末
我是汪斌(老汪),长期做制造业成本、业财与 Excel BI 建模。本篇是陪跑课讲义 EP028:把 List.Select / List.Skip 落到财务BP的宽表一行求和。
继续学:打通数据全链路闭环

不只录播课,更是手把手带做实操。长按识别海报二维码咨询,或微信备注「Excel BI」。











暂无评论内容