这次,我们继续讨论BYROW和BYCOL函数。
所谓明星产品就是每月中所有达标的产品:
例如,如果将目标定为4000,所有超过4000的都属于明星产品。
从大的概念上,这个问题跟判断每月是否达标好像是类似的,都是判断每月的数量。
在筛选达标月份时,我们使用了FILTER函数和BYCOL函数的结合:
=FILTER(C2:N2,BYCOL(C3:N16,LAMBDA(c,SUM(c)))>C20)
但是,这里的问题却是截然不同的。
因为,我们需要找多种产品,并且连接成为一个字符串返回:
a,c,d,i,j,n
所以,我们需要换一个思路。
如果我们将目标放在一列,比如,1月:
显然,我们可以通过筛选得到所有达标产品,
=FILTER(B3:C16,C3:C16>C19)
这个公式也可以写成:
=FILTER(B3:B16,C3:C16>C19)
就可以得到产品名称了。
将这个公式与TEXTJOIN函数结合使用:
=TEXTJOIN(",",TRUE,FILTER(B3:B16,C3:C16>C19))
这是对于一列的情况,对于多列的情况呢?对于多列,当然要逐列完成了。而逐列完成就需要BYCOL函数出马了。
=BYCOL( C3:N16, LAMBDA(c, TEXTJOIN(",", TRUE, FILTER(B3:B16, c>C19) ) ))
这就是BYCOL函数的本意。其中LAMBDA函数中的c就是数据中的每一列。
将问题转个90度😀,看看如何得到各产品销量最大的月份:
我们可以进行同样的分析:
我们肯定可以找出每行当中销量最大的月份:
=FILTER(C2:N2,C3:N3=MAX(C3:N3))
那么只要通过BYROW函数逐行循环,然后将上面公式中的C3:N3用循环变量r替换即可:
=BYROW(C3:N16,LAMBDA(r,FILTER(C2:N2,r=MAX(r))))
一切都是那么简单!
详细解释请看视频
联系客服