

在使用PowerQuery处理数据的过程中,有时我们需要对行值进行求和计算。比如下图的数据表,除年份外其他每列是不同的费用类型,我们需要基于此表计算出不同年份的营运费用及总费用,如何实现呢?

关于营运费用(市场费用、销售费用及营业费用)的计算实现,我们可以采用下列两种方法。第一种,点击创建自定义列,在公式栏输入List.Sum函数及三个计算列名即可,计算公式和结果如下图。


第二种,点击创建自定义列,在公式栏输入下图中的公式,我们会用到List.Sum、Record.ToList及Record.SelectFields等三个函数的嵌套。Record.SelectFields函数获取计算列的值,Record.ToList函数将值转化为list,后由List.Sum函数进行求和。


第一种方法简单直白,简单数据建议使用这种方法,但采用此法如若出现错误不易查找原因。第二种方法首先通过Record.ToList函数和Record.Selected函数创建新的list列(如下图),之后用List.Sum函数对list列进行求和计算,计算list列的过程可以检查list值是否准确,在数据比较复杂的情况下推荐使用这种方法。

接下来需要计算总费用,首先我们可以采用前两者的方法,将列名一一输入到公式中便可以计算出来求和值。但时如果我们遇到比较多的列需要计算的话,上述方法会显得非常繁琐,而且比较容易出错。所以这里我们用到第三种方法,具体实现步骤可分为三个步骤。第一步:复制一张数据表,将新表中非计算列删除。


第二步,创建自定义列并输入下图中的公式。公式中Record.ToList函数括号内下划线代表所有列值,确认之后将自动计算所有行的求和值即总费用。


第三步,在原表中选择合并查询,将计算的总费用列合并到原表中。合并查询过程我们需要选择一个相同的列,并选择合适的联接种类,具体操作步骤如下图。



最后,只需将查询列中的总费用列勾选展开即可添加到原表中,这样我们就轻松实现了部分费用列和全部费用列的求和计算。怎么样,你学会了吗?如需获取案例数据,请至公众号回复暗号【多行求和】下载即可。