Table.ToColumns【按列转列表】
语法很简单,Table.ToColumns(表名)
不局限于原表,每一个步骤也是一个表
结果是一个大列表。里面的每一个元素是一个小列表,每个列表对应原来表里的每一列~如图:

Table.FromColumns【表来自列】
Table.FromColumns({列表1,列表2},{“标题1”,“标题2”})
例如:= Table.FromColumns({{1,2,3},{4,5,6},{7,8,9,10}},{“A”,“B”,“C”})

包含 {两个大列表},每个参数都要用一个{}括起来
第一个是列表集,逗号隔开:{list1,list2,list3}
——列表集中元素的个数可以不相同,少的部分默认null补齐
第二个是标题 / 字段,一一对应,需要加"双引号",例如:{“姓名”,“学号”,“年龄”}
——标题如果不想手动加,也可以Table.ColumnNames(源)
如果不写标题,就默认是Column1、Column2…
Table.ToRows【按行转列表】
语法:Table.ToRows(表)
结果是一个列表里包含着n个list,每个list,对应每一行。不包含标题

Table.FromRows【表来自行】
语法:Table.FromRows(列表集,标题),标题可不写
要求:列表集中每个列表的元素个数必须一致
例如:= Table.FromRows({{1,2,3},{4,5,6},{7,8,9}},{“A”,“B”,“C”})

示例1:求行总计 & 列总计

(1)横向求合计
也就是求每个人这3个月的总和
思路:先新添一列,提取出每一行的record,将records 转成 list,再将列表中不是数值的元素剔除,这里可以直接skip 跳过。最后就可以直接求和了。
参考写法:
= Table.AddColumn(源,“合计”,each List.Sum(List.Skip(Record.ToList(_)))
注:Skip 默认跳过第一个元素,所以第2参数可以不写

(2)纵向求合计

思路:
将表Table 转成列表 Table.ToColumns,这样每一列都分别为一个列表。再直接在这个基础上遍历List.Transform,将每个列表都求和,当然第一列都是文本会出错,可以用 try…otherwise…来避免。正好我想把不能运算的第一列变成“总计”两个字。那么:try List.Sum(_) otherwise “合计”。这时候还是一个list,需要转表Table.FromRows。最后和原表连接起来。
一步写完:
= 源 & Table.FromRows({List.Transform(Table.ToColumns(源),each try List.Sum(_)
otherwise “合计”)},Table.ColumnNames(源))
分步骤:
(a)思路:表转列
表转列= Table.ToColumns(源)
(b)思路:遍历,报错返回:总计
遍历并合计= List.Transform(表转列,each try List.Sum(_) otherwise “合计”)
(c)思路:表来自行,并加上表头
表来自行= Table.FromRows({遍历并合计},Table.ColumnNames(源))
(d)两张表连接
合并= 源 & 表来自行
Table.FromColumns & Table.ToColumns & Table.ToRows & Table.FromRows&spm=1001.2101.3001.5002&articleId=143165079&d=1&t=3&u=82cb875cacf946e6b3284e720d880c32)
491

被折叠的 条评论
为什么被折叠?



