

在第一次分享《EXCEL一对多条件查找显示多个结果(INDEX+SMALL+IF+ROW函数组合)》时,留下个尾巴。今天捋一捋INDEX+MATCH去重,把这事画上句号。

刚接触“万金油公式”的同学可以先看以下文章,有详细用法拆解,方便本文理解。
EXCEL一对多条件查找显示多个结果(INDEX+SMALL+IF+ROW函数组合)mp.weixin.qq.com

=INDEX(A:A,SMALL(IF(MATCH($A$2:$A$13,$A$2:$A$13,0)=ROW($A$2:$A$13)-1,ROW($2:$13),4^8),ROW(1:1)))&""
这个去重公式同样是用INDEX+SMALL+IF+ROW来提取满足条件的值,只不过这里的“条件”变为A列所有省份(去除重复项)。

重点理解公式中间这一段MATCH($A$2:$A$13,$A$2:$A$13,0)=ROW($A$2:$A$13)-1

我们在编辑栏选中公式中较难理解的部分,按F9功能键解析:


公式:
MATCH($A$2:$A$13,$A$2:$A$13,0)=ROW($A$2:$A$13)-1
结果:
{1;2;1;4;1;2;7;2;7;4;7;4}={1;2;3;4;5;6;7;8;9;10;11;12}
MATCH($A$2:$A$13,$A$2:$A$13,0)和ROW($A$2:$A$13)-1两个公式得到的两组数组结果,相同序位(位置)的值一样,则返回所在行的行号ROW($2:$13),不同则返回一个很大的数4^8(4的8次方即65536)。
Match函数第3个参数为0时,表示精确查找某范围内等于查找值的第一个位置,所以上例在A2至A13单元格中查找A2“广东”返回值是1,查找A4、A6单元格(同样是“广东”)返回的值也是1;依此类推其他省份。
因此,MATCH($A$2:$A$13,$A$2:$A$13,0)=ROW($A$2:$A$13)-1即判断:查找值(比如A4单元格)在A2:A13区域第一次出现的序号(结果1)是否等于查找值(A4单元格)所在行号(结果4)减1,即为3。
关于INDEX(结果列,SMALL(IF(条件,ROW(条件列),4^8),ROW(A1)))&""的理解则参照一对多条件查找的思路:
EXCEL万金油公式:INDEX+SMALL+IF+ROW函数组合