我的VLookup如何在应从中提取数据的列中返回0

时间:2019-08-29 13:48:09

标签: excel vba

我有一个带有两张纸的工作簿。一张纸包含存储在表内部的数据连接。这是一组样本数据,格式与我的数据排列方式相同。

数据表 Data Connection Table

另一张纸包含前6列和最后一列的原始复制粘贴。如下所示。

原始数据 enter image description here 我正在执行此查找: =VLOOKUP(M2,'Raw Data'!A1:G1195,6) 并且我返回0,但是如果我将要检查的列更改为=VLOOKUP(M2,'Raw Data'!A1:G1195,1),则得到正确的结果,但是尝试将第6列(“注释列”)放入VLookUp仅返回0。

上面有一个VBA标签的原因是因为我也试图通过宏来执行此操作,但是宏和此动手查找都无法正确返回正确的结果。 (宏不返回任何内容)

编辑:经过进一步检查,似乎当我将FALSE添加为第四参数时,我现在返回#N / A,这意味着它根本找不到匹配的条目。.我通过删除FALSE和似乎完全以某种方式引用了错误的行。

1 个答案:

答案 0 :(得分:1)

VLOOKUP在第二个参数指定的范围的第一列中搜索第一个参数的值。在您的示例中,您使用M列作为要查找的值,并使用A列作为要检查的值。这些不匹配。您已经通过在VLOOKUP的第4个参数中添加FALSE作为示例来说明了这一点,该参数强制完全匹配,并且发现根本没有匹配项,因为Raw Data列A中的任何内容都不与数据表的M列匹配。

不使用FALSE作为第四个参数会更改行为,以执行最接近的匹配搜索,这不是您想要的,并且会产生错误的结果。

不幸的是,由于VLOOKUP使用第一列,而Unique ID是原始数据的最后一列,因此在创建正确的VLOOKUP公式时会遇到一些挑战,因为所需的列是您正在查看的列的左侧。如果您可以将Unique ID移到Raw Data的最左列,则它将按预期工作。您还可以创建一个隐藏的最左侧的列来复制M列。如果无法重新排列数据,则需要以不同的方式解决问题。

一件不错的事情是也将范围声明为命名范围(例如raw_data),而不是使用单元格引用。如果您要从数据库中提取数据,Excel会自动为范围命名,您也可以使用该名称。