相信在很多童鞋的认识里,Excel最常用的函数之一,都会有vlookup吧。
VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找)
常规的实例大家都可以在网上铺天盖地地找到教程,我这里不会详细说明。
关于vlookup的局限性,有以下三点:
不能反向查找:vlookup只支持对查找范围里第一列进行匹配,不能对查找范围内其他列匹配
单一条件匹配:查找目标只有一个条件,不支持多个条件
一对一查找:存在相同目标值时,只返回第一个
1、常规用法
公式:
=VLOOKUP(F3,B:C,2,0)
查找目标只有一个(第一个参数:F3)
刚好在查找范围的第一列内(第二个参数:B:C)
返回值查找范围的第二列值(第三个参数:2)
使用精确匹配(第四个参数:0)
2、反向查找
上面说了,vlookup限制很死,只能从查找范围第一列里找,那怎么破?!
公式:
=VLOOKUP(F3,IF({1,0},C:C,B:B),2,0)
利用IF({1,0},C:C,B:B)来构造一个 C:C&B:B的数组,相当于B:C的反向。
同理,这个也行:IF({0,1},B:B,C:C)
举一反三
对于第一条常规用法的时候,如果我们想要返回第三列的值,正常情况下是
=VLOOKUP(F3,B:D,3,0)
将整个数组都包进去,要是查找目标与返回值之间相隔着十几列甚至是几十列呢?要数返回第几列不就数死你了?
而如果用IF({1,0},C:C,B:B),则可以将数组控制在两列
公式:
=VLOOKUP(F3,IF({1,0},B:B,D:D),2,0)
3、多条件匹配
哪里有剥削,哪里就有反抗!连“不让多条件查找”都能破!
“&”组合数组方式
公式:
=VLOOKUP(F2&G2,IF({1,0},B:B&D:D,C:C),2,0)
由于是组合数组,不能直接按回车,要按Ctrl+Alt+Enter
先用F2&G2来构造“凤凰中文有效”的条件,然后匹配B:B&D:D之中有这个条件的。可以从下面的辅助列方法看到B:B&D:D的效果
辅助列方式
先在E列作个辅助列,公式
=B2&D2,然后向下填充
然后在I2输入公式:
=VLOOKUP(G2&H2,IF({1,0},E:E,C:C),2,0)
一样是通过IF({1,0},E:E,C:C)来构造新的数组,只是第一列换成了辅助列
4、一对多查找
在本教程的栗子中,“凤凰中文有效”匹配到的目标值不只一项,如何才能按顺序返回不同的值呢?
还是需要辅助列
在原辅助列的右边,在加一列,公式
=COUNTIF(E$1:E2,E2),向下填充
意思是,从E1开始到当前格时,当前格的值重复了多少次
E$1是为了向下填充的时候,每个COUNTIF都是保持从E1开始数的。
然后定位J2,公式
=VLOOKUP(H3&I3&ROW(A1),IF({1,0},E:E&F:F,C:C),2,0)
按Ctrl+Alt+Enter
H3&I3&ROW(A1)为了构造“凤凰中文有效1”,对应在E:E&F:F数组里找。
Row(A1)是为了向下填充的时候可以 每行自动增加1。
微信搜索公众号@圣创杂学堂,即可获取每天更新
原创不易,转载请保留出处。