【问题标题】:VLOOKUP is malfunctioning in Excel?VLOOKUP 在 Excel 中出现故障?
【发布时间】:2018-03-28 00:06:41
【问题描述】:

我已经在这个问题上工作了两个多小时,我开始质疑我的理智。我过去曾多次使用 vlookup,但现在它无法按预期工作。我正在尝试使用 vlookup 在 Excel 中复制 LEFT-JOIN(来自 SQL)。

这是我在单元格G2 上使用的公式:

这是我要为其查找值的所有值的表。

这是我用作参考的表格:

我只搜索一列以简化示例。单元格G2 也包含应用于其下单元格的公式。正如您从第一张图片中看到的那样,它不仅不匹配,而且还发生了一些非常奇怪的行为。

  1. 我已经删除了两个表的重复项。
  2. 我已将数据格式化为纯文本值
  3. 我在三台不同的电脑上试过这个公式

无论如何,我一直得到相同的结果!我开始失去理智了。

有人知道吗? 谢谢你

【问题讨论】:

  • 由于range_lookupTRUE,第一列(A368:A697) 必须按升序排列。如果不存在完全匹配,则公式将返回近似匹配。
  • 那么你目前在这个问题上的立场是什么,@PaulTrimor?

标签: excel vlookup


【解决方案1】:

如果你想要完全匹配,你应该使用 FALSE 作为最后一个参数

【讨论】:

  • 即使我使用 FALSE,我仍然会得到意想不到的值
  • 我实际上得到了大多数#VALUE 错误。每个类似 10 个 #VALUE 错误时偶尔会出现 #NA 错误。
  • 可能它在某处将其视为数字。试试:=VLOOKUP("" & A2, $A$368:$A697, 1, FALSE)
  • #N/A 表示在查找表中找不到该值。如果您看到#VALUE!然后仔细检查您的公式和数据。最后一个参数为 FALSE 时不应出现值错误。如果最后一个参数为 TRUE,则 VALUE 错误意味着您的搜索词小于第一个值。
  • 是的,我今天早上刚回来工作并测试了 =VLOOKUP("" & A2, $A$368:$A697, 1, FALSE) 。它成功了!
【解决方案2】:

查找表必须按升序排序。单元格 A369 的值似乎低于其前面的行 A368。有几个“较低”值出现在较高值之后的实例。

在你发疯之前,请考虑对 368 美元到 679 美元的范围进行排序,看看是否有区别。

否则,是时候放弃VLOOKUP,改用INDEXMATCH

【讨论】:

  • 索引/匹配不会解决根本问题。如果最后一个参数为 TRUE,则匹配还需要一个排序范围。这里的问题是需要完全匹配,因此第四个 Vlookup 参数必须为 FALSE 以避免错误结果,同时排序顺序变得无关紧要。
  • 即使是已排序的数据表,如果使用 TRUE,如果没有找到精确匹配,查找将返回下一个最小匹配。如果期望完全匹配,这可能会导致错误的结果。
【解决方案3】:

如果您的 lookup_value 不“干净”,有时您会收到 #N/A 错误。如果是这种情况,请尝试以下公式:
=VLOOKUP(TRIM(CLEAN(A2)),$A$368:$A$697,1,FALSE)

此外,您的 table_array 可能有“不干净”的数据,因此您需要先清理这些数据,然后才能找到匹配项。为此,请使用此 array 公式,使用 Ctrl + Shift + Enter 提交它:
=VLOOKUP(A2,TRIM(CLEAN($A$368:$A$697)),1,FALSE)

【讨论】:

    【解决方案4】:

    你试过做 MATCH 吗?需要VLOOKUP吗?

    如果您对使用 match 感到满意,请尝试:

    =IF(MATCH(A2,$A$368:$A$697,0),A2,"NO MATCH")
    

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 2022-06-22
      相关资源
      最近更新 更多