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)展开
这里不谈动态,动态以前反复讲过,不重复,况且这里也属于“无动可态”。

返回结果:

没问题,至于保留2位小数的问题,就要根据你自己的需求而定了,是四舍五入,还是向下舍入、向上舍入......

以四舍五入为例,如下图

做好的样例我已经发到评论区置顶了,欢迎大家下载研究

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e
我的学习方法,就是把学会的知识在B站讲出来,义务回答网友问题,不断开拓眼界,增长知识,希望你们尽早加入B站大家庭。等你哦!