我使用ifError
与vLookUp
结合来查找大表中的值,并从特定列中提取一个值以放置在另一个工作表中的特定单元格中。< / p>
这是我目前用于从第D列开始从第D列开始绘制值的代码,将其放入另一个工作表的单元格B14中。
Sheet3.Range("B14").Value = Application.IfError(Application.VLookup(Sheet3.Range("B4"), Sheet2.Range("D5:CU530"), 9, False), "Not Found")
此代码返回&#34; Not Found&#34;为了我。
使用类似公式进行进一步测试但直接放入随机单元格会返回真值。以下是使用的公式。
=IFERROR(VLOOKUP(B4,'Sheet 2 Name'!D5:CU530,9,FALSE),"Not Found")
用于其他列(例如第2/3/4列)的相同vba代码(如第一个块引用中所示)返回真值而不是&#34; Not Found&#34;,即使目标单元格也是如此是表3的B14。
任何想法为什么?
编辑:更多信息 如果我在VBA中单独使用vLookUp(参见下面的代码),我可以获得真值,但我需要IfError,因为会出现没有找到值的情况。
Application.VLookup(Sheet3.Range("B4"), Sheet2.Range("D5:CU530"), 9, False)
答案 0 :(得分:0)
您可以在没有IfError
的情况下执行if statement
而不是Vlookup
:
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
答案 1 :(得分:0)
我认为错误可能在于vlookup部分,vlookup是一个更老的代码部分(即VB的旧版本),你可以在哪里,我真的鼓励使用索引匹配组合,因为它是更具体的内容(更有效率)!
以下是指向
的信息的链接https://msdn.microsoft.com/en-us/library/office/ff197581.aspx
和匹配
https://msdn.microsoft.com/en-us/library/office/ff835873.aspx
希望这有帮助!
答案 2 :(得分:-1)
使用错误功能
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")