明明是空值,VLOOKUP非要返回个0,搞得同事头都大了

用VLOOKUP查找时,如果原数据中的数据为空,VLOOKUP返回结果会变为0:

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

空值和0虽然都能用"啥也没有"来解释,但并不是所有场合都能相互替换。

有没有办法让VLOOKUP的结果仍然保持空值呢?


VLOOKUP连接空值

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

这是常用方法,在公式的后面连接一个空值将数字转换为文本型数字。注意,双引号中什么都不要放,不要去敲空格。

明显的缺陷是文本型数字不能直接用于求和,此时如果对它们运用SUM函数,结果为0.


搭配IFERROR

如果必须要正常数字,可以在VLOOKUP前加上一个双减号再把文本型数字转换为正常数字:

=--(VLOOKUP(D2,A:B,2,0)&"")

但新的问题又发生了,双减号操作只对文本型数字有效,对空值操作时会返回错误值,于是再用IFERROR将错误值转换为空:

=IFERROR(--(VLOOKUP(D2,A:B,2,0)&""),"")

IF判断

IF判断,如果VLOOKUP结果为0,则输出空,否则输出VLOOKUP结果:

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

公式略长,但好在逻辑简单,也能很好的解决问题。


TEXT指定格式

TEXT是专业的格式控制函数:

=TEXT(VLOOKUP(D2,A:B,2,0),"0;-0;")

这个公式的意思是正数和负数正常显示,0则显示为空。

但它也有个缺陷,当数据中0和空值同时存在时,统统返回空值,如黄色所示数据。


空值返回0的情况在XLOOKUP,HLOOKUP,OFFSET甚至INDEX+MATCH等查找引用类函数中都存在,以上解决方案同样实用。