在Excel中根据条件查找匹配多个值

在Excel中根据条件查找匹配多个值(vlookup只能匹配第一个值)
以前在深圳的时候就被问过这个问题,今天又遇到同事在问,索性记录在此。

 以下图,根据E列的值,在A列中查找对应的数据,输出匹配行上B列的值,依次填入到F\G\H...列


 公式拆解
首先,它是一个数组公式
COLUMN(A$1) 
从F列往右,返回值为1,2,3,4,5,6……序列数,表示匹配到的第几个值

ROW($1:$2000)
返回1:2000 各行的行号

IF($A$1:$A$2000=$E1,ROW($1:$2000),4^8) 
A列数据和E列当前行数据进行匹配,相等,则返回行号,不相等,返回一个常数4^8,即65536,在Excel2003中,它是表格的最后一行

SMALL(IF(xxx),COLUMN())
返回第COLUMN()个最小值,即依次返回A列上匹配到的值对应的行号
 
INDEX($B:$B,SMALL())
在B列返回SMALL指定行号的值

INDEX()&""
将结果转换为文本 

 {}
括弧表示这是一个数组公式