没想到@符号居然是一个Excel函数解密SINGLE

有些奇奇怪怪一时无法理解的事情,随着时间的推移阅历的增长或许就慢慢明白了。比如一直无法理解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))