真没想到,上次小编写的这个教程竟然火了。

遗憾的是有一个问题没解决,就是同一天同一个银行的金额没合并,如下图所示两个中行应该合并成一个 中行7200。

打开网易新闻 查看精彩图片

所以,今天小编就重写公式,把这个功能补齐了。

=LET(X,GROUPBY(CHOOSECOLS(A1:C17,3,1),B1:B17,SUM,3,0),GROUPBY(CHOOSECOLS(X,1),HSTACK(CHOOSECOLS(X,2)&CHOOSECOLS(X,3),CHOOSECOLS(X,3)),HSTACK(ARRAYTOTEXT,SUM),3,0))

打开网易新闻 查看精彩图片

公式太长看不懂,嘿嘿,小编就拆开一步步看如何实现的。

分析:

要想结果不重复,那在合并之前先进行一次汇总,把同一天同一家银行的金额汇总到一起。

=GROUPBY(CHOOSECOLS(A1:C17,3,1),B1:B17,SUM,3,0)

注:Choosecols提取第3列和第1列,作为groupby的第一个参数

打开网易新闻 查看精彩图片

接下来就开始进行二次分组,因为要多处用到上面的结果,所以用let定义一个名称X,后面表达式中只要用到上面汇总后的结果,就可以用X替代了。

(通过这个例子也感受到let函数在简化公式中的应用了吧,如果不定义名称,这个公式会长好几倍)

=LET(X,GROUPBY(CHOOSECOLS(A1:C17,3,1),B1:B17,SUM,3,0),GROUPBY(CHOOSECOLS(X,1),HSTACK(CHOOSECOLS(X,2)&CHOOSECOLS(X,3),CHOOSECOLS(X,3)),HSTACK(ARRAYTOTEXT,SUM),3,0))

汇总方法和上次文章介绍的一样

CHOOSECOLS(X,1)

提取第1列作为第一个参数

CHOOSECOLS(X,2)&CHOOSECOLS(X,3)

连接第2、3列因为结果需要银行和金额要连接

HSTACK(CHOOSECOLS(X,2)&CHOOSECOLS(X,3),CHOOSECOLS(X,3))

用HSTACK把两列连接后结果和B列金额重新组合成两列数组,因为结果需要同时显示合并和金额合计

HSTACK(ARRAYTOTEXT,SUM)

同样进行两种不同的运算也需要用HSTACK函数组合

3和0分别是显示标题行和不显不汇总行

最后再总结一下groupdy的几个重要参数

=Groupby(行字段,值字段,分组方式,是否显示标题,是否显示总行)