Excel Vlookup 从 reference_row-1 返回值而不是参考行

Excel Vlookup 从 reference_row-1 返回值而不是参考行

作为主题,我在两个 excel 文件之间进行 vlookup,公式返回值from reference_row-1(“Room”) 而不是reference_row(DPS DPC) 为什么会发生这种情况,我该如何解决它?

excel vlookup 返回错误

答案1

该评论虽然Mark Fitzgerald是正确的,但还不够准确。

正确的部分是第四个参数既未指定也未指定为 FALSE。

如果未指定,则默认为 TRUE。如果指定为 TRUE,则也为 TRUE。无论哪种情况,您都会遇到此处看到的问题,但此处还发生了其他事情,导致您得到不满意的结果。

在解决这个问题之前,我应该指出,在像你这样的用法中,你显然需要精确匹配才能获得正确的结果。因此,你必须添加第四个参数并将其设为 FALSE,以便它寻找精确匹配。那么我将要解决的根本问题就不重要了,这是一个好处。

真正的问题在于您如何告诉 Excel 使用哪个范围进行查找:第二个参数。您使用的C:V参数告诉 Excel 使用这些列中的每个单元格。有很多理由不这样做,但这里最重要的一个与第四个参数的 TRUE 值有关。

当它为 TRUE 时,Microsoft 告诉我们VLOOKUP()(以及在不期望精确匹配的情况下查找内容时的一些其他函数)将搜索数据,直到找到“大于”查找值的单元格,然后停止,并返回该“大于”值之前的值。我要说的是,这并非事实,但对于您的困难来说已经足够接近事实了。

根据他们的主张,他们认为只有当查找列(此处为 C 列)按从低到高排序(“AZ”)时,才会出现正确的结果。而且这几乎总是可行的,即使在您的案例中,也可能如此(但可能性高达 99.99%)。不幸的是,大量人根本无法在不弄乱数据中的其他功能的情况下进行这种排序。对于大多数人来说,他们只是希望根据其他条件进行排序,而不能按查找列排序。

那么,您发生了什么事?查找在 C 列中查找“CA-whatever”。但是...它从单元格 C1 中的列标题开始。该标题是“条形码”...到目前为止(有点)很好。然后在单元格 C2 中,它找到了“大于”查找值(以“CA”开头)的东西。假设它在单元格 C2 中按字母顺序找到它和标题后面的东西。它立即停止并“撤退”回标题单元格。这是范围内的第 1 行,它向右读取 S 列并在该单元格(S1)中找到“房间”。这就是它返回的内容。

事实上,如果 C2 的字母顺序没有超过查找值,它肯定会在到达 C380 之前找到一些东西,并停在那个较早的点,后退一行,然后返回该行的 S 列值。这也可能是错误的,但它可能没有明显到让你注意到。毕竟,它会给出一些看起来正常的空间。一切可能看起来都不错。然而,现在很容易就有 4 个或 32 个,甚至 200-300 个错误值。

正如我在开始时提到的,无论如何您显然都需要精确匹配,因此请将第四个参数添加到查找中。使用FALSE,而不是TRUE。FALSE 将强制它查找精确匹配。

由于该问题发布于两年前,您似乎已经以某种方式解决了它。但也许这对其他人有用,有人可能会发现它甚至有助于解释使用其他函数添加结果,这些函数据称像 MS 所说的那样工作,但实际上就像我说的那样工作,尽管我触及了它只是整个主题的一小部分!但任何执行查找的函数都可能遇到它。MATCH()XMATCH(),甚至是新XLOOKUP()功能。不可否认,较新的函数仅在使用非精确匹配时才会遇到它,但因为它们确实如此,而且人们确实以这种方式使用它们……而且还有其他时候会出现这种情况。

相关内容