有些奇奇怪怪一时无法理解的事情,随着时间的推移阅历的增长或许就慢慢明白了。比如一直无法理解ExCel中为什么需要一个NA()函数来产生错误值"#N/A"。直到TOCOL的出现,它真的需要刻意产生"#N/A"来忽略数据的。
隐藏函数SINGLE
隐藏函数SINGLE用于返回数组中(无论一维数组还是二维数组)的第一个元素,而且它有个替身@。
输入公式:
=SINGLE({1,4;2,5;3,6})会变成:
=@{1,4;2,5;3,6}返回数组第一个值1。
FILTER筛选大于80分的姓名和得分,返回一个数组:
=FILTER(B2:C12,C2:C12>80)套上SINGLE得到数组中的第一个值:
=@FILTER(B2:C12,C2:C12>80)SINGLE与GROUPBY
SINGLE的应用场景简直屈指可数,一直以来都无法理解它存在的意义,直到GROUPBY的出现。
众所周知GROUPBY把分类后的数据传递给第三参数执行运算,而且传递的大概率是个数组。
以下公式中A类传递的数组是{100;900},SUM求和得到1000:
=GROUPBY(A1:A4,B1:B4,SUM)第三参数设置为SINGLE取出这个数组的第一个元素100:
=GROUPBY(A1:A4,B1:B4,SINGLE)所以GROUPBY分类后的数组中第一个值刚好是需要的数据,SINGEL就排上用场了。当然也适用于PIVOTBY。
案例1:从成绩表中整理出各班第一名
=LET(array,SORT(A2:C12,{1,3},{1,-1}),
GROUPBY(TAKE(array,,1),
TAKE(array,,-2),
SINGLE,,0))SORT排序得到的数组命名为array;
分别提取array中的第1列和第2,3列作为GROUPBY的第二三参数;
SINGEL返回各数组中的第一个值,即第一名的信息。
案例2:求首次报价与均价
GROUPBY第三参数收到的是日期和报价两列数据,SINGEL对日期取其第一个值就是首次报价日期,AVERAGE对报价求平均值:
=VSTACK({"产品","首次报价","均价"},GROUPBY(A2:A12,B2:C12,HSTACK(SINGLE,AVERAGE),0))