Excel之PowerQuery 組內(nèi)按列取最大值避開非數(shù)值與null
網(wǎng)友提問:
原表:

目標表:

網(wǎng)友整理要求:

準備一樣表:

1、導入PowerQuery

2、重要的一步,分組
先對姓名列分組,現(xiàn)在的x代表數(shù)據(jù)列的每個Table

再將每個Table按列轉(zhuǎn)成列表(修改上面的公式)

上面紅框內(nèi)的Table.ToColumns(x)代表數(shù)據(jù)列的兩個List,每個List里面還包括很多小的List,我們現(xiàn)在要處理里面小List,所以要遍歷外面的大List(修改上面的公式)

上的y代表每個小List。修改上面的公式,如果每個小List最大值大于等于1就返回1,否則返回每個小List的最大元素值。但是遇到非數(shù)字(中文或null)就會返回錯誤

修改上面的公式,當遇到錯誤時,返回最大值

現(xiàn)在我們看到的數(shù)據(jù)變成了List,我們要把他轉(zhuǎn)成表,每個List就是表的一行,加上表頭

分組這一步完成代碼如下:
3、選中數(shù)據(jù)列,刪除其它列,展開數(shù)據(jù)列。

如果想寫成動態(tài),在展開后做如下修改

4、計算合計
先將那個這一步按行轉(zhuǎn)列表

遍歷列表,x是每個List

為了得到每個List里面每一行數(shù)據(jù),我們要遍歷每個List,也就是遍歷x。修改上面公式,如下圖所示,y代表每個List中每個元素

我們先將每個元素轉(zhuǎn)成文本(為了統(tǒng)一格式),然后再把它們轉(zhuǎn)成數(shù)值,比如文字會報錯,如果報錯就返回0。如果原來是null,還會返回null。公式修改如下

我們通過List.Sum計算結(jié)果即可

這一步的完成公式如下:
5、合并
把展開的數(shù)據(jù)那張表按列轉(zhuǎn)成列表,連接合計那張列表,轉(zhuǎn)成表,加上表頭

友情提示:
配套文件已發(fā)評論區(qū)置頂,如果原需求,做不出來,那就是自己做錯了,請自行檢查
如果需求有變,請另行提問,謝謝。

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e
更多教程:https://www.bilibili.com/read/cv10222110