今天的教程由会飞的鱼提供,他是Excel不加班团队管理人员之一。


笨鸟:飞鱼啊,为什么我学习的时候感觉都懂了,自己编写公式的时候就会出现各种错误。


飞鱼:出现错误后,首先要找到出问题的原因,然后才能对症下药。以VLOOKUP为例,出现错误的原因有两种:其一是粗心大意,忘了设置某个参数或者设置函数公式不正确,其二是数据不规范。下面重点介绍VLOOKUP函数中几种错误值#N/A)的场景。


01 公式返回错误值(#N/A)。

=VLOOKUP(D2,A2:B10,2,0)


错误(#N/A)的是意思查找不到,可以理解为查找值不存在。检查公式,发现是因为查找区域没有使用绝对引用锁定,在公式向下填充后,查找区域也随之向下改变,导致查找不到值,所以返回错误值(#N/A)。解决方法是查找区域使用绝对引用,或者引用整列。

=VLOOKUP(D4,$A$2:$B$10,2,0)

=VLOOKUP(D4,A:B,2,0)


修改公式后,E2E3单元格还是返回错误值,我们已经知道(#N/A)错误类型是查找不到值,但我们看到A列姓名是包含D3单元格“柳瑶”的,明明有相同的内容,为什么查找不到呢?

遇到这种情况说明这两个单元格的“柳瑶”并不完全相同。这里提供两种常出现的场景及解决方法:一种是人工录的数据,要检查文本两端是否存在空格,可以使用替换功能把空格替换为空;另一种是从统计导出的数据,除了要检查空格问题,还要检查数据是否包含非打印字符。


笨鸟:检查数据是否有空格这个我会,用替换功能就可以了,关键是怎样检查数据是否包含非打印字符呢?


飞鱼:把数据复制Word里可以快速找出非打印字符了。我们可以看到“柳瑶”前后包含有换行符,在Word中删除无用字符后再复制到Excel就可以了。

以上,另一种除去空格和非打印字符的方法是使用嵌套函数。首先使用CLEAN函数去除非打印字符,然后使用TRIM函数去除两端空格。数组公式,按Ctrl+Shift+Enter三键结束。注意,数组公式不要引用整列,否则计算量太大,可能会导致Excel崩溃。

=VLOOKUP(TRIM(CLEAN(D2)),TRIM(CLEAN($A$1:$B$10)),2,0)


虽然用以上函数可以直接处理这类(#N/A)错误,但不建议大家这么做。这个公式存在的意义只是帮助我们快速的查找到想要的结果,正确的做法是使用替换功能,或者通过辅助列转换为规范数据格式。养成一个好的制表习惯非常重要。


笨鸟:我明白了,我一定记住要规范数据。


如果查找后没有对应值,我们使用IFERROR函数,把错误值转换为空,或其它提示内容。

=IFERROR(VLOOKUP(D2,A:B,2,0),"无信息")


02 公式返回结果不匹配。

=VLOOKUP(D2,A:B,2,1)

=VLOOKUP(D2,A:B,2)


以上两条公式都是错误的。第一条,第4个参数设置1后,查找模式为模糊查找。第二条,省略了第4个参数,省略后查找模式同样为模糊查找。正确公式应该是第4个参数设置为0,即精确查找。当你对函数非常熟悉后,可以省略第四个参数值,查找模式同样是精确查找。

=VLOOKUP(D2,A:B,2,0)

=VLOOKUP(D2,A:B,2,)


笨鸟:省略参数不对,省略参数值却可以啊,这里不明白呢?


飞鱼:不明白也没事,指定查找模式就可以了。


飞鱼:还有一种情况也会导致返回结果不匹配。

=VLOOKUP(E2,A:C,2,0)


笨鸟:我看没什么问题啊,查找区域引用整列,不是绝对引用问题,一共两列数据,返回第2列,查找模式也设置精确查找了,真是奇怪了。


飞鱼:如果你仔细看,B列被隐藏了,实际查找区域共有3列,公式返回2列,实际上是返回B列的结果,把返回列设置为3才是正确的。

=VLOOKUP(E2,A:C,3,0)


有一些小伙伴的制表习惯不好——对于无用的列,不是直接删除,而是隐藏起来,这样的习惯会给我们后期数据处理带来许多麻烦。


在实际工作中,引用少则几列,多则十几列甚至几十列,第3参数非常关键,在设置的时候也易出现错误,并且设置错误后也不易被发现。以下图示,冯俊9月对应的数值是178,因为第3参数设置错了,返回的是8月的175。这种错误,当数据成千上万行时,是很难发现的。

=VLOOKUP(P3,B:N,9,0)


笨鸟:那有什么好方法吗?


飞鱼:可以使用COLUMN函数,返回查找区域对应的所在列号。以下图示,在查找区域的第一列的B7单元格,输入公式后向右填充即可返回每一列对应的序号。可以有效的解决隐藏列的问题。

=COLUMN(A1)


或者在B7单元格输入1后,按“Ctrl”同时,鼠标拖动填充柄向右填充也是可以的。


这样我们就可以清楚地看到9月是第10列,第三个参数输入10就ok。

=VLOOKUP(P3,B:N,10,0)


笨鸟:这个方法好,使用这个方法就不担心数错了。


作者:卢子,清华畅销书作者;个人公众号:Excel不加班(ID:Excelbujiaban)