【问题】如图成绩制作成绩条(工资条)
【知识点】
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呢?
下面用图像解析一下
【效果】