Excel vlookup 函数的几种高难度错误及解决方案

在未升级到 O365 之前,vlookup 函数是最常用的查找函数之一,甚至对很多人来说没有之一。


那么重要的函数,然而在某些特定情况下却常常出错,可真闹心。


我归纳总结了一下,除了查询区域参数的相对、绝对引用容易搞错,第 3 参数容易对错列这种比较容易发现和解决的问题以外,以下是比较常见却又有点技术含量的问题。


案例:


  • 根据数字查找文本
  • 根据文本查找数字
  • 空值结果不要为 0
  • 带通配符“~”的查找

  • 解决方案 1:根据数字查找文本


    根据 D 列的月份查找出对应的获客数。


    如果按正常思路,应该在 E2 单元格输入以下公式 --> 下拉复制公式:

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


    但是由于 A 列的值是文本格式,而 D 列是数值,所以查找结果出错。


    因此本例的公式需要做如下变通,就能成功查找出结果:

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


  • 本公式与之前的区别只是在第一个查找参数后面加了“&""”;
  • 作用是把查找的数字转换成文本型,使之可以成功与 A 列的文本匹配

  • 解决方案 2:根据文本查找数字


    下例的情况正好跟前面相反,A 列是数值,而作为查询列的 D 列却是文本格式。


    还是先看一下中规中矩的 vlookup 用法是否可行。


    在 E2 单元格输入以下公式 --> 下拉复制公式:

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


    查找结果仍然出错,原因还是因为 A、D 两列的格式不匹配。


    正确公式如下:

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


  • 该公式将查找参数 *1,这样就能把文本型数字转换成数值。

  • 解决方案 3:空值结果不要为 0


    下例中的 B 列有部分空值,用 vlookup 查询的时候,E 列会出现怎样的结果?


    从下图可以看出,对于查询区域中的所有空值,vlookup 函数都返回 0。


    但实际情况中,空值有时并不等同于 0,如何让空还是空?


    只需要将以上公式变换为

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


  • 上述公式只是多连接了一个空格,就将 0 强制转化成了空值。

  • 解决方案 4:带通配符“~”的查找


    下图中的月份值为区间,月份之间用“~”连接。


    A、D 列的格式完全一致,现在查找总该没问题了吧?


    事实却未天从人愿。


    这又是为什么呢?因为“~”是通配符,它的作用是将通配符“?”和“*”转换为普通字符。


    如果要让“~”不具有通配符的作用,而是作为符号,那么就需要在它前面再加一个“~”。


    因此在公式中套用一个 substitute 函数,将查找参数中的“~”替换成“~~”,就能成功找出结果。


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


    有关带通配符查找的详解,请参阅 Excel 带特殊符号的单元格,用 vlookup 为何查找不到?


    很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

    现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。

    举报
    评论 0