Excel之PowerQuery 看看網友的提問思路多么清楚
網友提問:

放大圖片

網友寫的工作表函數公式,是告訴我計算邏輯,想用PQ完成
回答網友問題:
我按網友的公式把最終結果寫出來一會做對比

(1)將原表導入PQ

(2)分組分步思考
<1>? 下圖x代表數據列的每個table

<2> 開始分步思考,我們先給每張table也就是x,添加列,那y就代表現在【分攤金額】那列中的每行的記錄

<3> 四則運算
我們要用每一行的數量,與整個Table(也就是x)的數量、金額之和做四則運算
就是:List.Sum(x[數量])、?List.Sum(x[金額]) ??
每一行的數量就是:y[數量]
注意:這里不懂的話,詳見《M函數第一季》筆記02.對三大容器中的元素進行獲取

但是最后一行,他的計算邏輯不是這樣的,他是用金額列之后減掉分攤金額除最后一行之外的和。
<4> 拿到每個Table去掉最后一行之后的分攤金額之后
已知a代表每個Table,刪除最后一行用Table.RemoveLastN

所以可以寫成

<5> 金額總計,剛才講過了
如上圖所示,a代表數據列的每個Table,他們每個Table中的金額列就是??a[金額],求和就是List.Sum(a[金額])
所以可以寫成下面的樣子

<6>?
將a代表的每個Table刪除最后一行??Table.RemoveLastN(a)
連接上??a代表的每個Table的最后一行(它是記錄)轉成表,再修改分攤金額列,讓金額總計減去b



根據上面我們學過的知識,寫法如下

最終這一步的代碼:
(3)刪除不要的列,鼠標操作即可
選中數據列-右鍵-刪除其他列

(4)展開
這里不談動態(tài),動態(tài)以前反復講過,不重復,況且這里也屬于“無動可態(tài)”。

返回結果:

沒問題,至于保留2位小數的問題,就要根據你自己的需求而定了,是四舍五入,還是向下舍入、向上舍入......

以四舍五入為例,如下圖

做好的樣例我已經發(fā)到評論區(qū)置頂了,歡迎大家下載研究

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e
我的學習方法,就是把學會的知識在B站講出來,義務回答網友問題,不斷開拓眼界,增長知識,希望你們盡早加入B站大家庭。等你哦!