当前位置: 首页 > article >正文

【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


http://www.kler.cn/news/327768.html

相关文章:

  • OpenCV视频I/O(7)视频采集类VideoCapture之初始化视频捕获设备或打开一个视频文件函数open()的使用
  • css 边框流光效果
  • 算法刷题笔记 约数个数(详细注释的C++实现)
  • 钉钉如何请求webhook发送信息
  • 基于JAVA+SpringBoot+Vue的校园商铺管理系统
  • Java之线程篇七
  • 解读 Story Protocol:IP 与区块链的潜力与障碍
  • 从零开始Ubuntu24.04上Docker构建自动化部署(四)Docker安装gitlab
  • 微信小程序转化为uni-app项目
  • 这个科技工厂藏着拼多多的「数字田园梦」
  • OpenHarmony(鸿蒙南向)——平台驱动指南【PWM】
  • 学Java还是c++好?
  • 如何在字节跳动的marscode上部署AI API,却意外地将功能搞废了?——分享踩坑经历
  • SpringCloud源码:服务端分析(二)- EurekaServer分析
  • 滚雪球学Oracle[1.1讲]:Oracle数据库基础概念
  • RabbitMQ高级特性-发送方确认
  • 使用scroll-behavior属性实现页面平滑滚动的几个问题
  • 力扣经典笔试题 最小K个数 小根堆 大根堆 快速排序 一题多解
  • C语言初识(二)
  • Springboot项目实现easyExcel批量导入到数据库
  • Python人工智能使用OpenCV进行图片形状的中心检测
  • linux 查看端口占用
  • 利用SpringBoot构建高效社区医院平台
  • 大数据埋点方案Openresty+Nginx+Lua踩坑日志
  • QSpice (9) --结合Python仿真
  • PostgreSQL是否有等待事件
  • Android常用C++特性之std::abs
  • Clickhouse分布式表初体验
  • python的内存管理机制
  • DOM元素导出图片与PDF:多种方案对比与实现