最后是IFERROR和MATCH函数。
MATCH函数是最里层的函数,也是这个数组公式中很关键的部分。MATCH函数得到的结果是:
{1;2;3;4;5;5;3;2;9;#N/A;#N/A;;#N/A;#N/A;#N/A…;#N/A}
至此已经将数组公式解剖好了,现在要从最里层的MATCH理解起。
MTACH函数将得到查找值第一次出现的位置,所以当有重复值值,它也只会返回相同的数字。
前面已经知道了MATCH函数的结果是一对的数字和“#N/A”,所以需要个IFERROR过滤。公式“ROW($A$1:$A$100)”将得到1-100的数组,然后“ROW数组=IFERROR结果数组”计算后,将得到一堆的:
{TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;FALSE;…;FALSE}
你会发现TURE的位置正好是不重复数据所在的行数,这样再用SMALL函数依次提取第1、2、3大的行数,最终再用INDEX根据行数得到对应的姓名。
步骤④一般的公式都没有这个复杂,不过看公式的步骤都是类似的。理解了公式后,就要学会修改公式。
例如,给IF替换个条件公式。
{=INDEX(A:A,SMALL(IF(COUNTIF($A$1:$A$100,$A$1:$A$100)=1,ROW($A$1:$A$100),),ROW(A1)))}