上次介绍了Excel新函数GROUPBY和PIVOTBY的基本使用,这次我们介绍一下它们的使用技巧。
要对多列数值进行汇总,只要在values参数中填写多列即可,
=GROUPBY(B1:B17, D1:E17, SUM,3)
结果如下:
这里的分类列和值列都不需要在一个表中,可以使用HSTACK合成一个数组,
例如:
=GROUPBY( HSTACK(C1:C17, B1:B17), HSTACK(D1:D17, E1:E17), SUM,3)
这个例子还告诉我们,在分类汇总时,不必拘泥于原表中列的顺序。当然,只要Excel中会返回引用的那些函数都可以用在这里,比如XLOOKUP函数。
这是这两个函数最强大的功能所在:我们可以不使用参数选择中提供的那些聚合函数,而代之以LAMBDA函数。
比如,如果我们要统计不同Category中的Value合计,但是只要那些数量>100的结果,可以使用公式:
=GROUPBY(B1:B17, D1:D17, LAMBDA(x, SUM(--(x>100))))
这里的LAMBDA函数以 x 为参数,代表的是根据分组筛选出的数值数组,然后计算该数组中大于100的那部分合计,
这样,你就可以可以将这两个函数用在非常复杂的统计场景中了,这样就可以极大的拓宽这些函数的使用范围。以后我会详细一些这样的案例。
我们可以使用超级透视表或者PQ完成文本透视(见这篇文章),也讲过用Excel函数进行文本透视的方法。不过这些方法都比较麻烦。
现在,借助GROUPBY和PIVOTBY函数,我们可以很简单地完成文本透视。
比如,要列举不同年份都是用何种不同类型的能源,可以使用下面的公式:
=GROUPBY( A1:A17, B1:B17, LAMBDA(x, ARRAYTOTEXT(SORT(UNIQUE(x)))), ,0)
我们将Category作为需要汇总的列,然后用LAMBDA函数对其进行汇总。汇总方式就是对于每一个分组中的能源类别,去重,排序,然后合并成字符串。
结果如下:
筛选的参数在参数表的最后。例如,
这个公式在汇总结果中筛选的是Category为Solar的值。
注意,这个筛选动作是在分类汇总前,而不是分类汇总后。比如,它可以在上面的分类汇总中筛选Industry为Auto的值,