Excel 左vlookup错误

Excel 左vlookup错误,excel,vba,vlookup,Excel,Vba,Vlookup,我想在这里做左vlookup。我知道我有一些无法找到的值,但是我不明白为什么在循环的中间仍然存在应用程序定义的错误或对象定义的错误。提前谢谢你的帮助 With Sheet3 x = 2 Do Until IsEmpty(.Range("E" & x).value) look = .Range("E" & x).value result = WorksheetFunction.Index(Sheet2.Range("A:A"), WorksheetFunction.M

我想在这里做左vlookup。我知道我有一些无法找到的值,但是我不明白为什么在循环的中间仍然存在应用程序定义的错误或对象定义的错误。提前谢谢你的帮助

 With Sheet3
 x = 2
 Do Until IsEmpty(.Range("E" & x).value)
 look = .Range("E" & x).value
 result = WorksheetFunction.Index(Sheet2.Range("A:A"), 
 WorksheetFunction.Match(look, Sheet2.Range("B:B"), 0))
   If Not IsError(result) Then
       .Range("F" & x).value = result
   Else
       .Range("F" & x).value = " "
   End If
   x = x + 1
Loop
End With 

在VBA中,如果变量包含vbError值,ISERROR函数将返回true。当未找到匹配项时发生错误时,此值不会分配给
结果
变量,即使它是一个变量。您必须使用
On error Goto…
方法捕获该错误

这没什么大不了的。您的代码可能如下所示

Result = ""
On Error Resume Next
Result = WorksheetFunction.Index(Sheet2.Range("A:A"), _
         WorksheetFunction.Match(look, Sheet2.Range("B:B"), 0))
.Range("F" & x).Value = Result
如果出现错误,变量结果将保留以前的值。因此,在函数之前将其设置为“”。因此,您不需要测试是否存在错误


在编写这段代码的过程中,我发现您还漏掉了索引函数换行符处的下划线。

这个数组公式可以吗

=INDEX($B$1:$B$8,SMALL(IF($A$1:$A$8=$E$1,ROW($A$1:$A$8)),ROW‌​S($G$1:$G1))) 

它位于第1行到第8行

请指定“我知道我有一些找不到的值”意味着在vlookup中找不到一些值,我想在出现错误的单元格值处将其返回为空白?单元格值23。这是vlookup找不到的值。这种方法对vlookup有效,但为什么不呢?