ARTICLE · 1352645
被Excel坑得最惨的一次:VLOOKUP死活找不到,全怪这个“~”
VLOOKUP报错中最让人头疼的就是,在表格中明明有这条数据,但是它却冷冰冰地给你一个#N/A。公式没有错误,空格也检查过了,最后发现罪魁祸首居然是一个不起眼的波浪号!
一、Excel里这3个符号,不只是普通字符
❶ 星号*:表示可以匹配任意多个字符。例如“车间*”,车间一组和车间二组都可以被匹配到。
❷ 问号?:匹配任意一个字符。例如“车间?”可以匹配到“车间A”,但是不能匹配到“车间AB”。
❸ 波浪号~:转义符,用来使*、?、~恢复为普通的字符。
所以,要找到真正的带星号的“车间*”,不能直接写成“车间*”,而应该写成“车间~*”。否则Excel就会把星号当作通配符来使用,所有的以“车间”开头的内容都会被匹配到。
二、数据没丢,是“~”被Excel偷偷忽略了
如果查找值为D~E,在数据源中也明明白白地写有D~E,那么VLOOKUP为什么还找不到呢?
原因就是Excel会把~看作转义符,不是普通的文本。所以你看到的D~E,在函数中会被当作DE来处理。两边不对齐的话,#N/A 就会出现。
这个坑最阴的地方就是,数据看上去一切正常,用肉眼核对十遍也未必能找到问题。当你终于发现了它的时候,它已经把公式拆了N次,就连数据源都开始怀疑自己了。另外MATCH、COUNTIF使用通配符的函数也有可能被它绊倒。
三、解决办法很简单:一个“~”变成两个
要使Excel把波浪号当作普通的字符来处理,在波浪号之前加上一个~:
原内容:D~E
修改为:D~~E
数据很少,直接修改即可;数据很多的时候可以用Ctrl+H来替换:
查找内容:~~
替换为:~~

点击全部替换
只对公式中需要查找的值或者辅助列进行替换,不要把数据源和查找列一起替换。两边都是双波浪号,但是又不匹配。
不想修改原来的数值的话,可以使用公式来查找值:
=VLOOKUP(SUBSTITUTE(A2,"~","~~"),数据区域,返回列数,FALSE)

它会把A2中的单个~转换为~~,然后交给VLOOKUP来查找,原来的表格不需要改动。
四、记住一个口诀,下次少查半小时
星号、问号要查找的时候,在前面加上波浪线;波浪线本身要查找的时候,两个一起上。
下次再遇到“数据明明存在,但是函数偏偏说是不存在”的情况时,不要急于删除公式重新编写。先看查找值中是否有*、?、~等符号,一般情况下,造成问题的就是这些小符号。















































































