自从6月份在部门做过一次excel内训后,就不断有同事向我咨询excel问题。上周一位同事跑来问我:为什么我的vlookup精确查询得不出结果?
我让她把表发给我看看(咨询excel问题,用excel来表达往往最直接有效)
为了方便说明,我把同事发给我的两个excel文件中必要的信息拎出来,整理到一个sheet中,如上图。E、F两列是数据源,需求是根据A列的门店编码在数据源中查找各门店的中转账户。
根据同事的需求,我用vlookup也做了一遍精确查询,发现和她得到结果一样。
vlookup查找结果出现错误值,一般有两种情况,一是数据源中确实没有需要查找的内容,二是数据源中有需要查找的内容,但二者格式不一致。
循着这个思路,我找了A列第一个门店编码,在E列手动输入进行筛选,发现数据源中有这个门店编码,所以第一种情况就可以排除了。
接下来就考虑第二种情况:格式不一致的问题。为了验证是否格式不一致,我直接复制(ctrl+c)A列第一个门店编码,然后在E列直接粘贴(ctrl+v)进行筛选,发现无匹配项,这进一步证实了前面的判断:数据源与查找内容确实格式不一致。
问题定位后,接下来就是去解决问题了。针对格式不一致问题,最常见的就是空格,所以我先用查找替换去处理,发现没有空格。
紧接着就考虑应该是有不可见字符。我最常用的方法是“分列”,因为这个最简单也最高效,基本上都能解决问题。
具体操作,如下图,选中A列,在“数据”功能菜单下选择“分列”,默认选中“分隔符号”,点击“下一步”,进入第2步后,继续点击“下一步”,在第3步中,选中“文本”数据格式,点击“完成”。再对E列进行相同的操作。这样做的目的,是希望将A列与E列的格式调整成一致。
一般情况下,到这里问题就可以解决了。但是这次很诡异的事情发生了,分列处理后,结果没有变化。
我不信这个邪,再试一次,发现还是一样的结果。这就表示在这里“分列”无能为力了。
无奈,只能换一种办法:clean函数。这个函数的作用是清除单元格中的非打印字符。
分别增加辅助列,用clean函数清除A列、E列每个单元格:
可是,结果还是一样不对,也就意味着函数也无法解决这里的格式不一致问题。
大多数情况下,前面两种方法已经足够解决格式不一致的问题了,因为无论是分列还是clean函数,都可以清除掉一些不可见字符。
可是见鬼了,这次的问题,用这两种方法都不行。怎么办呢?没办法,只能使出最后的杀手锏,那就是用“记事本”或者“word”来处理不可见字符。
将A列内容复制到记事本,然后再将记事本的这些内容复制,返回到excel,选择性粘贴—文本,这时候可以看到“?”
到这里就简单了,只需要把“?”替换为空就好了。不过这里有个小门道,就是“?”在excel中属于通配符,要查找通配符本身就必须在字符前加上“~”来表示。
到这里,你再将上面清除过不可见字符的内容复制粘贴到A列,会发现,vlookup的正确查询结果就已经出现了。同理,你可以按照同样的方法去操作E列,会发现E列并没有不可见字符。
这样的处理不可见字符的方法也可以通过word实现,有兴趣的朋友可以自己的动手试试。
最后大家可以通过坚果云分享越分享越快乐,今天的分享就到这里。如果你觉得有帮助,看完请转发,让我们共同陪伴~~