如何在Power Query中高效对动态列的整数数值求和?
Power Query 动态列数值求和解决方案
针对动态列标题、包含文本列且需自动忽略缺失列的求和需求,可通过以下步骤实现:
核心思路
- 自动识别表格中所有数值类型列,不受列标题变化影响
- 对每行仅提取数值列的内容,忽略文本列和缺失列
- 对提取出的数值列表求和,生成TOTAL列
M代码实现
假设你的数据源表名为Source,添加以下步骤:
let Source = 你的数据源, // 获取所有数值类型的列名 NumberColumns = Table.ColumnsOfType(Source, {type number}), // 添加TOTAL求和列 AddTotalColumn = Table.AddColumn(Source, "TOTAL", each List.Sum(Record.SelectFields(_, NumberColumns))) in AddTotalColumn
代码说明
Table.ColumnsOfType(Source, {type number}):扫描整个表格,返回所有数值类型列的名称列表,自动适配动态列标题Record.SelectFields(_, NumberColumns):对当前行(_代表当前行记录)筛选出仅包含数值列的字段,若某数值列缺失则自动跳过List.Sum(...):对筛选后的数值列表求和,自动忽略null值
示例验证
原始表格
| ID | MEC101 | MEC-GRADE | THER305 | THER305-GRADE | TOTAL |
|---|---|---|---|---|---|
| 1002 | 70 | A | 40 | D | |
| 1003 | 50 | C | 60 | B | |
| 1004 | 60 | B | 30 | F |
预期结果1(所有数值列存在时)
| ID | MEC101 | MEC-GRADE | THER305 | THER305-GRADE | TOTAL |
|---|---|---|---|---|---|
| 1002 | 70 | A | 40 | D | 110 |
| 1003 | 50 | C | 60 | B | 110 |
| 1004 | 60 | B | 30 | F | 90 |
预期结果2(THER305列缺失时)
| ID | MEC101 | MEC-GRADE | TOTAL |
|---|---|---|---|
| 1002 | 70 | A | 70 |
| 1003 | 50 | C | 50 |
| 1004 | 60 | B | 60 |
内容的提问来源于stack exchange,提问作者val
相关产品推荐
相关产品推荐

