Excel函数
Office里的查找替换——函数一对多查找
2017-01-19 16:26:17

摘自:小妖-Office中国

昨天发了多对一查找的技巧,今天来说说一对多查找:

所谓一对多查找,就是满足一个条件的有N个结果……

先看下面的效果图,从符合的条件中找出多个符合的结果。

效果图:

函数一对多查找动态图:

函数一对多查找函数公式:

=INDEX(B:B,SMALL(IF(A$3:A$12=D$3,ROW($3:$12),13),ROW(A1)))&""

这是一个数组公式,需要同时按下【Ctrl】+【Shift】+【Enter】三个键完成才行,而且运行速度也相对慢,所以实在不提倡在现实中使用。

函数分析:

公式中A$3:A$12=D$3部分建构了一个内存数组,结果都为逻辑值,当A5:A14中有与D5相等的,也就是满足条件的,返回逻辑真TRUE,否则返回逻辑假FALSE。

公式中IF(A$3:A$12=D$3,ROW($3:$12),13)部分建构的还是个内存数组(废话),只不过就是把前面的逻辑值换成了数值,逻辑真对应的是3到12的序列数,逻辑假对应的是13,为什么是13?

话说这个13弄晕一堆人啊,被晕的原因主要是想复杂了,其实他就是个比12大的数,也不一定非要是13,多少都行,只要不超过2的20次方(Excel最大行数)。

公式中的SMALL(IF(A$3:A$12=D$3,ROW($3:$12),13),ROW(A1))部分,就是把If折腾出现的那些数从小大到排一下,这样,不符合条件的就被挤到了最后。

公式中的INDEX(B:B,SMALL(IF(A$3:A$12=D$3,ROW($3:$12),13),ROW(A1)))部分,不用多说了,就是把B列对应的符合条件的行数的单元格一个一个提出来呗。这里不一定非要用Index,Indirect和Offset都可以,只不过本身函数集团那BT的省字符的原则,Index是首选。

 

这公式虽然复杂且运行速度慢,但他却是非常经典的一个思路,也不知道是哪位高人想出来的,向他致敬!

点击加入群:Excel部落2  结识Excel大神
学好Excel,效率成倍提高,薪水稳步增长,职位快速提升每天一个源创技巧,如觉得有用,请点上面 关注。更重要手机转发分享

如喜欢此技巧,手机右上角点开,分享到QQ空间,方便自己以后看