领导:报表里又出现#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. 并点击格式。将字体的演示设置为白色。
看看动态效果图。
你觉得哪种方法更好呢?
你还有其他的处理方法吗?
以后总会用得上,值得关注,收藏,点赞,转发。