真没想到,上次小编写的这个教程竟然火了。
遗憾的是有一个问题没解决,就是同一天同一个银行的金额没合并,如下图所示两个中行应该合并成一个 中行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(行字段,值字段,分组方式,是否显示标题,是否显示总行)
热门跟贴