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

【Power Query】List.Range List.Skip

★ List.Range (批量取列表里的元素)

List.Range (列表,索引值,个数)

——也就是从列表的下标几开始取,取几个元素
下标默认从0开始

例如:= List.Range( {1,2,3,4,5} , 1 , 3 ) 结果是{2,3,4} 如果只是跳过前几个,也可以用 List.Skip 来代替

。。。手动分割线。。。。
。。。手动分割线。。。。

例1: 计算累加值

写法参考
= Table.AddColumn(已添加索引, “自定义”, each List.Sum(List.Range(源[收入],0,[索引])))

意为:每一行都进行如下操作:
将源里 收入这列的值,从头开始取到当前行,再将它们求和

——前提是,先添加索引列,从1开始,可以直接在选项卡里做

。。。手动分割线。。。。

例2: 计算累加值的占比

写法参考
= Table.AddColumn(已添加索引, “自定义”, each List.Sum(List.Range(源[收入],0,[索引]))/List.Sum(源[收入]),Percentage.Type)

也就是再多一步:除以总和,并更改数据类型 为百分比

。。。手动分割线。。。。

例3:工资条制作

思路:先降标题,是因为表头是要提取出来插到每一行的前面的,就必须得是第一行,这样就可以用 步骤名+{下标}的方式提取出来。
转记录是为了生成 list ,这样就可以用 List.Range 把除标题以外的每一行都取到,得到新列表了。标题 下标是0,所以要从1 开始。至于取几个,就直接Count 前面的列表,有几个元素取几个。
接着用遍历列表[ List.Transform],在每一行前面加一行标题,这样,大列表里每行都会嵌套一个两行小列表。
于是就需要把它们合并,最后把所有记录转成表,顺便提升一下标题。

可以做但是不是特别推荐

高级编译器:
let
源 = Excel.CurrentWorkbook(){[Name=“表2”]}[Content],
降标题 = Table.DemoteHeaders(源),
表转记录 = Table.ToRecords(降标题),
不要表头 = List.Range(表转记录,1,List.Count(表转记录)),
遍历列表 = List.Transform(不要表头,each {表转记录{0},_}), // 表转记录{0} 代表的是表头标题行,_ 代表的是当前的每一行
合并列表 = List.Combine(遍历列表),
记录转表 = Table.FromRecords(合并列表),
提升的标题 = Table.PromoteHeaders(记录转表, [PromoteAllScalars=true])
in
提升的标题
。。。手动分割线。。。。
。。。手动分割线。。。。

★ List.Skip (跳过列表里的n个元素取值)

根据第二参数``跳过``某一部分,形成一个新的列表

。。。手动分割线。。。。

List.Skip (列表,跳过的元素个数 or 跳过的条件)

例如:
List.Skip({1, 2, 3, 4, 5}, 3) // 返回: {4,5}
意为,跳过前3个元素,取后面部分
。。。手动分割线。。。。
从 {5, 4, 2, 6, 1} 创建以小于数字 3 开头的列表
List.Skip({5, 4, 2, 6, 1}, each _ > 3) // 返回: {2,6,1}
即,从第一个元素开始,只要>3的都跳过,一旦有<3的出现就结束,并从它起始,取到最后一位
。。。手动分割线。。。。

例1:求横行数值的总和

在这里插入图片描述
——求每个人的总分
。。。手动分割线。。。。
思路
新添加一列,命名为"总分",将每一行的记录 嵌套过来。
将记录转成列表,以方便后续操作
将列表里不需要的元素跳过,比如姓名,只留下数值
再对这个新列表求和

步骤拆解

(1)行转记录
= Table.AddColumn(源, “总分”, each _)
在这里插入图片描述
在这里插入图片描述
(2)记录转列表
= Table.AddColumn(源, “总分”, each Record.ToList(_))

在这里插入图片描述
(3)跳过姓名
= Table.AddColumn(源, “总分”, each List.Skip(Record.ToList(_),1))

在这里插入图片描述
(4)求和
= Table.AddColumn(源, “总分”, each List.Sum(List.Skip(Record.ToList(_),1)))
在这里插入图片描述

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


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

相关文章:

  • ◇【论文_20150225】 DQN_2015(nature) 〔Google DeepMind〕
  • 运维DAY01
  • 深度学习的起源要早于元学习
  • Spark安装
  • 桂林旅游攻略:SpringBoot平台全面指南
  • QtCreator14调试Qt5.15出现 Launching Debugger 错误
  • RK平台 GPIO序号转换软件
  • 二叉树算法之B+ 树(B+ Tree)详细解读
  • WPF中Grid、StackPanel、Canvas、WrapPanel的区别
  • Qt中对象间的通信机制
  • LTE 利用FFT 实现PSS的快速相关
  • C# 字符串常用方法
  • 意外断电 导致docker 部署禅道 的mariadb 启动报错
  • freeswitch-esl 实现广播功能
  • PDFView 1.0.2 jar包,github无法依赖下载,所以只能使用jar包进行,
  • HCIE-Datacom题库_08_安全【12道题】
  • 如何在Matlab界面中添加日期选择器?
  • 微服务--Gateway--局部过滤器接口耗时【重要】
  • 机器学习课程学习周报十七
  • VSCode自搭建嵌入式环境的make构建工具选择