自学内容网 自学内容网

【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⋅⋅⋅⋅⋅


原文地址:https://blog.csdn.net/WealthLucky/article/details/142914860

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!