表
格
拆
分

表格的拆分就是表格(Table)、列表(List)、记录(Record)之间的相互转换

表转列表——按列转(Table.ToColumns)
就是把表里面的每一个字段转为一个列表(List)

比如:

这个函数转换之后就不包含标题只有元素


表转列表——按行转(Table.ToRows)
就是每一行做出一个列表(List)

同样也不计算标题


按行和成表——(Table.FromRows)
Table.FromRows({列表},{标题}可省略)
=Table.FromRows({{1,4,7},{2,5,8},{3,6,9}})

如果加标题
=Table.FromRows({{1,4,7},{2,5,8},{3,6,9}},{"A","B","C"})

但是所有是元素数量必须一致,不然报错,系统 不会默认加空值


按列合成表——(Table.FromColumns)
Table.FromColumns({列表},{标题}可省略)
里面的每一个列表都是一个字段
=Table.FromColumns({{1,2,3},{4,5,6},{7,8,9}})

=Table.FromColumns({{1,2,3},{4,5,6},{7,8,9}},{"A","B","C"})

这个就可以有不同数量元素,系统自动补充null


练习:横向和纵向计算合计值

横向求和:
=Table.AddColumn(源,"总计",each
List.Sum(List.Skip(Record.ToList(_) )))

纵向求和:
=List.Transform(Table.ToColumns(源), each
try List.Sum(_), otherwise "合计")
表转列表后,遍历列表对列表求和 ,try 试错函数如果出现错误输出"合计"

计算出来和还是一个记录,要把记录转表然后合并
=Table.FromRows(
List.Transform(Table.ToColumns(源), each
try List.Sum(_), otherwise "合计")
,Table.ColumnNames(源)) & 源


Table.FromRows,就是把数据横向做成表那么纵向就是Table.FromColumns

本期关键字:#Excel#M函数#Excel Power Query#表转列表#表转列表按列转#Tabel.ToColumns#表转列表按行转#Table.ToRows#合成表#按行合成表#Table.FromRows#按列合成表#Table.FromColumns#试错函数#try otherwiser
夜雨聆风