当允许近似匹配时,Excel VLOOKUP返回#N / A,但是在需要精确匹配时返回值?

Excel VLOOKUP returns #N/A when allowing approximate match, but returns value when requiring exact match?

遇到一个我很好奇的非常奇怪的问题。在Excel中,我正在执行VLOOKUP,以将联系人姓名与在另一个数据库中找到的唯一ID匹配。公式例如:= VLOOKUP(B2,Sheet2!A:B,2,TRUE),非常基本。我用了大约。匹配,但是,当然,某些实例仍返回#N / A。但是,我使用快速control-F进行了双重检查,发现实际上存在一个(完全)匹配时,有许多实例返回NA。我正在进行故障排除并尝试了许多方法,但没有任何效果。许多检查确认了单元格是相等的,没有什么像隐藏的字符那样棘手的,非常奇特。无论如何,一时兴起,我从近似匹配更改为完全匹配,瞧瞧它奏效了! VLOOKUP返回正确的值。

我试图了解为什么会这样。显然,如果您需要完全匹配,但是只有大约一个。匹配它将返回NA。但这反过来是没有道理的。当允许甚至大约时,应返回精确匹配。火柴!因此,只需尝试了解VLOOKUP / Excel中幕后发生的事情,以使这种现象发生。

感谢您的见解!


使用近似VLOOKUP时,应始终按升序对查找矩阵中的键列(始终是矩阵范围的第一列)进行排序。原因如下:

想象一下以给定顺序的[2,3,10,4]值的键列。当大约要查找键" 4"时,该函数将开始比较列中的可用键,以" 2"开头。传递\\'3 \\'后,将跟随\\ '10 \\',该数字已经大于搜索的\\'4 \\'。因此,该函数停止搜索并以" approximation "形式返回上一个键行(\\'3 \\')的目标值。

现在,再举一个例子[10,2,3,4]。在这里,大约VLOOKUP将在第一个键比较之后立即停止搜索,因为\\ '10 \\'大于搜索的\\'4 \\'。由于没有先前的键行可用,因此返回的值为#N / A。但是,确切的VLOOKUP会找到匹配的键,因为它不会停止搜索。

除了键顺序外,建议所有键值都采用相同的格式。

希望这会有所帮助。