Excel M函数—— List.Zip 列表压缩
- 2026-09-21 13:59:41

List.Zip
List.Zip列表压缩函数就是将两个或者的多个列表对应位置的元素重新集合成为新的列表。
=List.Zip({{1,2,3},{4,5,6}})输出 {{1,4},{2,5},{3,6}}

=List.Zip({{1,2,3},{4,5,6},{7,8,9}})输出
{{1,4,7},{2,5,8},{3,6,9}}

文字字母也是一样的
还可以计算后输出
=List.Transform(List.Zip({{1,2,3},{4,5,6}}) each _{1} - _ {0} ) 输出{3,3,3}



实例(⊙o⊙)…
在一个成绩表里面求一个同学取多少个第一?


步骤
1、求最高分:
表转列表——跳过第一个姓名列——求最高分
Table.AddColumn(源,"最高分",
List.Transform(List.Skip(Table.ToColumns(源)),each List.Max(_)))

2、提出每一个人的分数
表转记录——记录转列表——跳过第一个
= Table.AddColumn(源,"分数",
each List.Skip(Record.ToList(_)))

3、压缩匹配并计数
= Table.Adcolumn(源,"次数”,each List.Sum(List.Transform(List.Zip(最高分,分数),each Number.From(_{0}=_{1}))))
把最高分和分数的两个公式带入就可以合并为一步完成


Number.From
Number.From 就是转换为数字类型,可以运算
文本转数值:Number.From("4")+3=4+3=7
逻辑转数值:Number.From(true)=1
Number.From(flase)=0
日期转数值:Number.From(#date(年,月,日))
写入时间: Number.From(#time(时,分,秒))
写入日期时间:Number.From(#datetime(年,月,日,时,分,秒))
都是以1899年12月30日为0计算的

本期关键字: