这次,我们继续讨论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)))) 一切都是那么简单! 详细解释请看视频 |
|