领导:报表里又出现#N/A, 是不是出错了?

我:不是的,是因为Vlookup没有找到数据,所以显示#N/A.

领导:#N/A是啥意思,看不懂。

我:#N/A是英文Not Available的意思,通俗的说就是查无此人。

领导:影响报表美观,在保留公式的同时,把#N/A去掉,我不想看到它。


大家在工作中,是不是经常遇到#N/A的情况?有没办法不显示#N/A, 而显示空白,或“没找到”,“不存在”,“查无此人”等?

答案:有办法。


下面介绍几种处理#N/A方法.

案例,

如下图,我们要查找员工的工号,部门,年薪,性别和年终奖。

根据前面文章学的知识,用一个Vlookup替代多个Vlookup的方式,在K2输入公式:

VLOOKUP($J2,$A:$F,MATCH(K$1,$A$1:$F$1,0),0),并向下,向右复制填充。

  • 查找值$J2. 由于姓名的规律是列号不变,所以我们锁定列号,前面加$.
  • 查找范围$A:$E. 我们用最大查找范围A列到F列,并锁定列号。
  • 结果所在的列。我们使用Match函数动态查找。MATCH(K$1,$A$1:$F$1,0)
  • 精准度。我们使用精准查找0.

数据源里的是"李连截",我们要找的是"李连杰",所以找不到,就会出现#N/A。如果我们不想显示#N/A ,而要显示“没找到”,怎么办?

第一种方法。Vlookup+if+ISNA.

判断函数ISNA,,用于判断是否为#N/A, 如果是就返回True, 如果不是就返回False.

ISNA, 是英文Is Not Available的缩写。语法格式为:ISNA(值)

如下图,在B2输入=ISNA(A2), 并向下填充复制。A4是#N/A,所以返回的是True.


条件函数If,语法格式为If(判断条件,如果是就显示, 如果否就显示)

如下图,如果成绩大于60,就显示及格,否则显示不及格。

公式为:=IF(A2>60,"及格","没及格")

  • 判断条件, A2>60, 这是一个逻辑值,

a. 如果成绩大于60就返回True,

b. 如果小于60就返回False.

  • "及格", 如果大于60就显示"及格"
  • "没及格", 如果小于60就显示"没及格"

If函数中的判断条件可以用ISNA()函数取代。

  • 原来的语法格式,If(判断条件,如果是就显示, 如果否就显示)
  • 代入ISNA后的语法格式,If(ISNA(值),如果是就显示, 如果否就显示)

ISNA函数中的值可以用Vlookup函数取代。

  • 原来的语法格式,ISNA(值)
  • 代入Vlookup后的语法格式,ISNA(Vlookup(...))


将If, ISNA, Vlookup组合在一起,

=if(ISNA(Vlookup(...)) ,"没找到", Vlookup(...) )


回到刚才的案例,

在K2输入:

=IF(ISNA(VLOOKUP($J2,$A:$F,MATCH(K$1,$A$1:$F$1,0),0)),"没找到",VLOOKUP($J2,$A:$F,MATCH(K$1,$A$1:$F$1,0),0))

这是不是有点神奇呢? 没找到,不会再显示#N/A, 而是显示的"没找到".

如果有的朋友想显示"查无此人", 公式就改为

=IF(ISNA(VLOOKUP($J2,$A:$F,MATCH(K$1,$A$1:$F$1,0),0)),"查无此人",VLOOKUP($J2,$A:$F,MATCH(K$1,$A$1:$E$1,0),0))

如果有的朋友想显示空白, 公式就改为

=IF(ISNA(VLOOKUP($J2,$A:$F,MATCH(K$1,$A$1:$F$1,0),0))," ",VLOOKUP($J2,$A:$F,MATCH(K$1,$A$1:$E$1,0),0))


第二种方法。Xlookup.

你没看错是Xlookup, 不是Vlookup,也不是Hlookup, 更不是Lookup。

Xlookup是新版 Excel才有的函数,其语法结构比Vlookup简单。

Xlookup的语法格式为:

  • 英文语法格式=XLOOKUP(lookup_value,lookup_array,return_array,[if_not_found],[match_mode],[search_mode])
  • 中文语法格式=XLOOKUP(查找值,查找列,结果列,如果没找到,查找精准度,搜索模式)

前面三个参数是必须参数,后面三个参数是可选参数。

其中的第四个参数"如果没找到", 就可以解决#N/A的问题。


我们将第一种方法的公式改为:

查找工号,在K2输入=XLOOKUP(J2,A:A,C:C,"没找到"), 并向下复制填充。

  • 查找值J2
  • 查找列A:A. 和Vlookup不一样,Xlookup只需要查找列A:A即可。Vlookup是查找范围,必须包含查找列和结果列。
  • 结果列C:C. 工号所在列。
  • 如果没找到,"没找到"。 如果没找到就显示"没找到".

Xlookup的公式,是不是比Vlookup简单多了?


Xlookup的弊端是不能和Match配合使用,Vlookup+Match可以设置一个公式,向下向右复制填充。但Xlookup没这个功能,所以,我们必须每列都设置一个格式。

同理,

  • 查找部门,在L2输入=XLOOKUP(J2,A:A,E:E,"没找到"),并向下复制填充。
  • 查找年薪,在M2输入=XLOOKUP(J2,A:A,B:B,"没找到"),并向下复制填充。
  • 查找性别,在N2输入=XLOOKUP(J2,A:A,F:F,"没找到"),并向下复制填充。
  • 查找年终奖,在O2输入=XLOOKUP(J2,A:A,D:D,"没找到"),并向下复制填充。


注意,Xlookup只适用于新版Excel, 旧版Excel无法使用。


第三种方法。条件格式。如果是#N/A,就将字体颜色改为白色。

步骤1. 选择范围K:O列。

步骤2. 选择条件格式-->新建规则

步骤3. 选择新建格式规则中的最后一个“使用公式确定要设置格式的单元格”

步骤4. 输入公式=ISNA(K1).

步骤5. 并点击格式。将字体的演示设置为白色。

看看动态效果图。


你觉得哪种方法更好呢?

你还有其他的处理方法吗?


以后总会用得上,值得关注,收藏,点赞,转发。