【Power Query】M函数-List.Sum

M函数-List

    • 列表求和 (List.Sum):
      • 1)横向求和
      • 2)列求和
        • ★思路★</font>
        • ★实操★</font>
      • 3)求总和
      • 4)求部分占总体的比重
        • ★横向★</font>
        • ★竖向★</font>

列表求和 (List.Sum):

|------------------------------|
| List.Sum({里面必须是一整个列表,不是零碎的}) |

返回列表中非空的所有值的总和
例如:List.Sum({1,2,3}) 表示求{1,2,3}这样一个列表的和,也就是6
通常嵌套使用

1)横向求和

这是直接选项卡添加自定义列来求和的写法:
直接语数英相加

用M函数的话:
= Table.AddColumn(提升的标题, "总分", each List.Sum({Chinese,Math,English}))
同样的字段,但是要多加两层括号

2)列求和

★思路★

|-------------------------------------------------------------------------|
| 1. 首先对列求和要提取出这一列:表字段,再用 List.Sum(表字段) 对列求和。★本身已经是列表了,不需要再加{}大括号 |

|------------------------------------------------------------------------------------------------------|
| 2. 再用 键值对 的形式写出 记录。字段1=List.Sum(表\[字段1),字段2=List.Sum(表\[字段2)]。★不需要求和的记录直接赋值:例,姓名="各科总分" |

|--------------------------------------------------------------------|
| 3. 接着是将记录转成表。用 Table.FromRecords({记录})。★记录要先转 列表 ,再转表,所以外面要先加{}大括号 |

|------------------------------------------|
| 4. 最后将现今的表 和 转成的表 合并。用 & 连接就可以了。★注意先后顺序 |

★实操★

假设我要 求 语数英 各科目的总分

利用高级编译器来写,位置如下:

在结束之前,每一步后面都跟上一个逗号,输出结果写在in后面


  • 源= Excel.CurrentWorkbook(){Name="表10"}Content,

  • 列求和记录 = NAME="各科总分"`,`Chinese=List.Sum(源\[Chinese),Math=List.Sum(源Math),English=List.Sum(源English)],

  • 转表 = Table.FromRecords({列求和记录}),

  • 合并表 = 源 & 转表


相当于是把每一步拆开,逻辑更加清晰,结果如下:

3)求总和

其实也就是同时求多列的和, 因为 List.Sum 里只包含一个列表, 所以要把它们整合成一个列表 可以用&来连接 ,例如:

=List.Sum(更改的类型[北京] & 更改的类型[上海] & 更改的类型[深圳])

4)求部分占总体的比重

★横向★

也就是用横向求和 去除以总和 单单这么做只会得出一个数字,要每一列都用上的话,那就需要【添加列】AddColumn

|------------------------------------|
| 横向的和:List.Sum({A,B,C}) |

|-----------------------------------------------------|
| 总和:List.Sum(更改的类型A & 更改的类型B & 更改的类型C) |

|-----------------------------------------------------------------------------------------------------------------------------------|
| = Table.AddColumn(更改的类型,"占比",each List.Sum({A,B,C})/List.Sum(更改的类型A & 更改的类型B & 更改的类型C),Percentage.Type) |


Percentage.Type 是用来更改新增这列的类型为【百分比】的,不加它,就默认是小数喽~


★竖向★


步骤如下:缺点是占比不是百分比的形式

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 生成新记录 = Month="占比",A=List.Sum(更改的类型\[A)/List.Sum(更改的类型A & 更改的类型B & 更改的类型C),B=List.Sum(更改的类型B)/List.Sum(更改的类型A & 更改的类型B & 更改的类型C),C=List.Sum(更改的类型C)/List.Sum(更改的类型A & 更改的类型B & 更改的类型C)], |

|----------------------------------|
| 转表 = Table.FromRecords({生成新记录}), |

|-------------------|
| 合并表 = 更改的类型 & 转表 |

∗ ∗ t h a n k s ∗ ∗ **thanks** ∗∗thanks∗∗

相关推荐
富唯智能9 小时前
复合机器人 vs 工业人形机器人|工厂工序选型回本方案
经验分享
-XWB-11 小时前
【LLM】Agent Planning 完全指南:8 种纯 LLM 范式 + 8 种混合规划模式详解(二)
人工智能·经验分享·aigc·学习方法·ai编程
遇乐的果园12 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园14 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
努力的小雨14 小时前
实测 Doubao-Seed-Evolving:把 Windows 桌面图标做成一个会自己运转的小世界
经验分享·ai智能
摇滚侠14 小时前
Java 全栈开发实战教程 课程笔记 29-33
笔记
茯苓gao15 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
whyTeaFo15 小时前
GAMES101: Lecture 9: Shading 3(Texture Mapping cont.) ppt笔记
笔记
chase。17 小时前
【学习笔记】PointWorld:迈向通用机器人操控的3D世界模型
笔记·学习·机器人
观远数据17 小时前
Excel到数据资产池:文件数据入湖的治理规范怎么建
前端·javascript·excel