PowerQuery制作工资条或成绩条

2022-10-31 15:26:24 浏览数 (1)

【问题】如图成绩制作成绩条(工资条)

【知识点】

1.List.Accumulate函数

2.Table.InsertRows函数

3.自定义函数

代码语言:javascript复制

List.Accumulate的官方语法说明如下:

List.Accumulate(list as list, seed as any,accumulator as function) as any

例如

下面的代码计算1到5列表的数字和

List.Accumulate({1, 2, 3, 4, 5}, 0, (state,current) => state   current) equals 15

计算结果是15(1 2 3 4 5)。

代码语言:javascript复制

语法

Table.InsertRows(table as table, offset asnumber, rows as list) as table

关于

返回一个表,此表包含插入到 table 中给定位置 offset 处的行 rows 的列表。 行中要插入的每列都与表的列类型匹配

可以插入一行也可以插入多行

= Table.InsertRows(源,0,{[姓名="小张",分数=50],[姓名="小李",分数=60]})

【上代码】

代码语言:javascript复制

let

    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

    自定义1 = List.Accumulate({1..Table.RowCount(源)-1},源,(x,y)=>Table.InsertRows(x,y*3-2,{Record.FromList({"",""},Table.ColumnNames(x)),Record.FromList(Table.ColumnNames(x),Table.ColumnNames(x))}))

in

自定义1

解析一下:

(x,y)=>其中是x是代表“源”,y代表“{1..Table.RowCount(源)-1}”

为什么是Y*3-2呢?

下面用图像解析一下

【效果】

0 人点赞