Excel之PowerQuery 组内按列取最大值避开非数值与null
网友提问:
原表:

目标表:

网友整理要求:

准备一样表:

1、导入PowerQuery

2、重要的一步,分组
先对姓名列分组,现在的x代表数据列的每个Table

再将每个Table按列转成列表(修改上面的公式)

上面红框内的Table.ToColumns(x)代表数据列的两个List,每个List里面还包括很多小的List,我们现在要处理里面小List,所以要遍历外面的大List(修改上面的公式)

上的y代表每个小List。修改上面的公式,如果每个小List最大值大于等于1就返回1,否则返回每个小List的最大元素值。但是遇到非数字(中文或null)就会返回错误

修改上面的公式,当遇到错误时,返回最大值

现在我们看到的数据变成了List,我们要把他转成表,每个List就是表的一行,加上表头

分组这一步完成代码如下:
3、选中数据列,删除其它列,展开数据列。

如果想写成动态,在展开后做如下修改

4、计算合计
先将那个这一步按行转列表

遍历列表,x是每个List

为了得到每个List里面每一行数据,我们要遍历每个List,也就是遍历x。修改上面公式,如下图所示,y代表每个List中每个元素

我们先将每个元素转成文本(为了统一格式),然后再把它们转成数值,比如文字会报错,如果报错就返回0。如果原来是null,还会返回null。公式修改如下

我们通过List.Sum计算结果即可

这一步的完成公式如下:
5、合并
把展开的数据那张表按列转成列表,连接合计那张列表,转成表,加上表头

友情提示:
配套文件已发评论区置顶,如果原需求,做不出来,那就是自己做错了,请自行检查
如果需求有变,请另行提问,谢谢。

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e