我有一个带有两张纸的工作簿。一张纸包含存储在表内部的数据连接。这是一组样本数据,格式与我的数据排列方式相同。
另一张纸包含前6列和最后一列的原始复制粘贴。如下所示。
原始数据
我正在执行此查找:
=VLOOKUP(M2,'Raw Data'!A1:G1195,6)
并且我返回0,但是如果我将要检查的列更改为=VLOOKUP(M2,'Raw Data'!A1:G1195,1)
,则得到正确的结果,但是尝试将第6列(“注释列”)放入VLookUp仅返回0。
上面有一个VBA标签的原因是因为我也试图通过宏来执行此操作,但是宏和此动手查找都无法正确返回正确的结果。 (宏不返回任何内容)
编辑:经过进一步检查,似乎当我将FALSE添加为第四参数时,我现在返回#N / A,这意味着它根本找不到匹配的条目。.我通过删除FALSE和似乎完全以某种方式引用了错误的行。
答案 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会自动为范围命名,您也可以使用该名称。