函数的坑"/>
Vlookup函数的坑
Vlookup函数究竟啥意思
Vlookup(lookup_value, table_array, col_index_num,TRUE/FALSE)
lookup_value=查找目标值
table_array=搜索范围
col_index_num=搜索范围的列数,若匹配则返回相应的值
TRUE/FALSE=精准/模糊匹配
反正单看文字是看不懂的,案例说话。
案例
下面为实际使用中的案例。本例中,问卷为成绩互评系统,预期结果为去掉填写人自己的分数,第一步要做的是将填写人和名单匹配上,顺便去除瞎写的数据。
1、lookup_value(查找目标值)
此值为我们想要查找的目标,比如,我发现龙傲天(D3)填写了调查问卷,想知道花名册上是否存在此号人物,则应该将lookup_value设置为D3。
=VLOOKUP(D3, table_array, col_index_num,TRUE/FALSE)
这样就完成了本步。
2、table_array(搜索范围)以及col_index_num(不知道咋写,反正是个列数)
显然A列为花名册,也就是我们希望搜索的范围。但是如果将table_array只设为A列,那么后续填写col_index_num时就会很尴尬,实际上我们将此值设为了A、B两列。为什么呢?那col_index_num究竟是啥呢?
将col_index_num设为2之后,整个命令变为
=VLOOKUP(D3, $A$2:$B$7, 2, TRUE/FALSE)
由最后的结果可以看到,col_index_num设为2,E3单元格返回的是龙傲天(D3)在花名册(范围为A、B两列)对应的名单编号。
由此可以看到,整个匹配逻辑为:
- 输入:D3单元格=龙傲天=问卷人姓名=查找目标值
- 精准匹配:D3单元格=龙傲天=》精确匹配(FALSE)=》龙傲天=A2
- 输出:E3单元格=1=B2单元格=匹配到的值(A2)所在行的table_array(查找范围)的col_index_num(要求列)
3、(大坑1)精准匹配和模糊匹配
上面顺风顺水就匹配到了龙傲天,这也是我看百度经验的时候觉得我也会这么顺。实际操作的时候就遭到了社会的毒打,也是为啥要写这篇博文的原因(并不是闲的蛋疼,也不是为了逃避画图)。。。
To be brief, 千万不要用模糊匹配,匹配的东西乱七八糟,而且匹配的毫无逻辑(只要是个汉字都可以匹配到“蔡英文”,我也是吐了)。请看图:
如果真想模糊匹配,请用正则表达式:
=VLOOKUP("*"&D12&"*",$A$2:$B$7,2,FALSE)
*是正则表达式的任意字符。
(大坑2)明明看着一样的,为什么匹配不到!!!
这种感觉和王者荣耀的匹配总是匹配到坑的心情是差不多的。。。
机智的我第一时间就猜测是不是单元格格式有问题,第二时间猜测前后是不是有空格,like这样:
结果都没有。。。折腾一圈后,多亏了神仙网友(),才解决了这个坑爹的问题。
问题出在了:看不见也无法编辑的非打印字符
郁闷吧!!!解决方法是
=trim(clean(目标单元格))
小结
1.table_array要包括需要返回的值所在的列,col_index_num为需要返回的值所在的列(比如名册编号)。
2.能不用文字匹配就别用,中英文都一样坑。数字不会骗人,不过要设置单元格格式。
3.千万别用模糊匹配(TRUE的取法就是我说的是真理,真的别用),用精确匹配(FALSE)。
4.非得用文字匹配的话,记得先做数据清洗。
更多推荐
Vlookup函数的坑
发布评论