1、乱码问题:
今天正好碰到这种情况,想起来写一写。
有时从客户那里拿到的CSV等文件,直接用excel打开是这样的:
其实观察一下会发现?的地方一般就是中文,实质上是中文字符显示不出来。有小伙伴一直是单独下个WPS解决的(wps似乎可以自动识别),但其实excel本身是可以识别的,只是多了一步。
先放解决办法再讲原理:
非常简单,右键文件(一般是csv之类的),使用notepad(记事本)打开:
通常就会发现可以看到中文了。这时另存为文件,在编码的地方选择utf-8:
然后再用excel打开即可。或者再换个别的编码。
如果还是不行,且你的电脑平时在一些如软件名称等地方也会显示乱码,可能是因为你电脑的区域设置有问题。百度一下如何更改系统区域设置,把english改成china再重启一下电脑,一般就可以了。
原理其实很简单,通俗来讲我们的语言文字(不管是中文英文还是其他各种语言)都需要以一定的形式转换告知电脑,然后电脑再进行转换才能在屏幕上显示出我们看到的文字,很多人所熟知的ASCII就是最普遍的一种。而像上述显示乱码的情况就是从数据库导出数据的过程中,中文字符以一种叫UTF-8的编码储存了,但excel默认不是以这种编码形式打开的(似乎是ANSI或Unicode),于是就会发生无法识别产生乱码的情况。
所以一般玩游戏或者码代码的小伙伴会比较注意,在安装路径中尽量不包括中文文件名,有时未知的报错就是因为程序本身未考虑到这种情况而导致中文路径无法被程序识别。
另外,由于自带的notepad虽然会检测对应的编码但有时不一定准确,可以试试一个免费的文本软件notepad++,虽然也不能自动识别,但可以直接在内部选择不同的编码查看效果。这个文本软件功能比较多,包括有些txt导入excel后直接切割效果不好,也可以使用这个来分隔。另外一个更轻量级的是notepad2(虽然我没用过),也是可以直接改编码查看的。
总的来说一般数据出现乱码都是编码有问题,往这个方向尝试即可。
2、看起来一样却v不出来
有时候使用客户系统导出来的数据进行vlookup的时候会有一种问题,就是明明看起来一模一样,并且使用查找也可以找到,偏偏就是死活v不出来(排除区域未绝对引用的情况),而且往往你会发现这种单元格也无法被转换单元格格式。像这种,行标签是索引,就是v不出来。
这时候简单一点的问题可能是,前后有空格(实质可能并不是空格)。于是从单元格中选取空格,使用替换功能替换即可。(如果确实是空格,用trim也可以)
但还有一种更恶心的情况,就是在编辑栏里看来看去都一样,也没找到任何空格:
这时候其实跟上述所说的编码问题也有一些类似,就是这个单元格里有excel完全无法识别且不显示的字符。这时请使用len()函数查看单元格字符长度:
你一般会惊讶地发现,明明看起来只有5,但是显示长度却是7,也就是有完全不显示的字符。一般这种字符都是在开头或者结尾,所以知道了原因,使用mid函数尝试去掉头或者尾就好了。
另外还有一种更粗暴的方式,就是现在excel有快速填充功能:
本质上可以说是各种left mid right trim等等函数的简单大集合,也就是你不用再思考使用哪个函数,第几位开始,第几位结束,先填一个例子,比如在第一行旁边手动输入45104,再点一下,就自动帮你识别好了并且往下填充了。这个搜一搜也有很多讲解,就不赘述了。
总之这样处理之后,你就可以顺利地vlookup啦~