【发布时间】:2016-07-06 09:11:29
【问题描述】:
我正在使用 ifError 和 vLookUp 在大表中查找值,并从特定列中提取值以放置在另一个工作表的特定单元格中。
这是我当前的代码,用于从 D 列开始的第 9 列绘制值,并将其放入另一个工作表的单元格 B14。
Sheet3.Range("B14").Value = Application.IfError(Application.VLookup(Sheet3.Range("B4"), Sheet2.Range("D5:CU530"), 9, False), "Not Found")
此代码为我返回“未找到”。
使用类似公式但直接放入随机单元格的进一步测试返回真实值。下面是使用的公式。
=IFERROR(VLOOKUP(B4,'Sheet 2 Name'!D5:CU530,9,FALSE),"Not Found")
用于其他列(例如第 2/3/4 列)的相同 vba 代码(如第一个块引用所示)返回的是真值而不是“未找到”,即使目标单元格是工作表 3 的 B14。
有什么想法吗?
编辑:更多信息 如果我在 VBA 中单独使用 vLookUp(请参阅下一个代码),我可以获得真实值,但我将需要 IfError,因为会出现找不到值的情况。
Application.VLookup(Sheet3.Range("B4"), Sheet2.Range("D5:CU530"), 9, False)
【问题讨论】:
-
实际上你的第一段代码是
Sheet3.Range("B14").Value所以你把它放到B14而不是B4 -
我的错,错字。我希望它在 B14。
-
代码对我来说似乎很好。 Maaaaybee
Application.IfError+Application.VLookup(如在同一命令中使用Application对象两次)导致错误,但我不知道为什么。作为一种解决方法,我建议在没有IFERROR的情况下运行VLOOKUP,然后检查错误。 -
嗯,这很奇怪,因为在其他单元格中我调用了相同的命令,但只是从另一列而不是第 9 列收集数据,并且它正在工作。我将继续排除故障并在此处更新帖子。谢谢你的建议,不胜感激
-
可能与预期返回的值有关。你能告诉我们应该从第 9 列返回的值是什么吗?不知何故,
VLookup似乎返回了正确的值,但IfError函数将第 9 列中的值视为错误。