【问题标题】:Calling IfError with vLookUp in VBA returns error even though cell formula returns value即使单元格公式返回值,在 VBA 中使用 vLookUp 调用 IfError 也会返回错误
【发布时间】:2016-07-06 09:11:29
【问题描述】:

我正在使用 ifErrorvLookUp 在大表中查找值,并从特定列中提取值以放置在另一个工作表的特定单元格中。

这是我当前的代码,用于从 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 列中的值视为错误。

标签: excel vba vlookup


【解决方案1】:

您可以不使用IfError,而是在您的Vlookup 之后使用if statement

x = Application.VLookup(Sheet3.Range("B4"), Sheet2.Range("D5:CU530"), 9, False)

If IsError(x) Then
    Sheet3.Range("B14").Value = "Not found"
Else
    Sheet3.Range("B14").Value = x
End If

【讨论】:

  • 嗯,这可能是另一种选择!谢谢!我仍然想弄清楚为什么它不起作用..
【解决方案2】:

我相信错误可能出在 vlookup 部分,vlookup 是一个更旧的代码部分(即旧版本的 VB),如果可以的话,我真的鼓励使用索引匹配组合,因为它是更具体地了解您的需求(并且更高效)!

这里是索引信息的链接

https://msdn.microsoft.com/en-us/library/office/ff197581.aspx

和匹配

https://msdn.microsoft.com/en-us/library/office/ff835873.aspx

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    使用错误函数

    On Error Resume Next
    
    ws.Range("B14").Value = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(ws.Range("B2").Value, ws.Range("E:F"), 1, False), "No error")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 2019-01-30
      • 2020-03-20
      • 2023-03-17
      • 1970-01-01
      • 2017-09-07
      相关资源
      最近更新 更多