【问题标题】:VBA VLookUp Runtime ErrorVBA VLookUp 运行时错误
【发布时间】:2018-12-23 20:32:24
【问题描述】:

我正在同一个工作表上执行循环 vlookup,但出现运行时错误:1004:无法使用此代码获取 WorksheetFunction 类的 Vlookup 属性:

Sub Test()        
    Dim d As Long 
    Dim lastrowx2 As Long 
    lastrowx2 = Worksheets("WS").Cells(Rows.Count, 1).End(xlUp).Row

    For d = 2 To lastrowx2

        Worksheets("WS").Cells(d, 16).Value = _ 'cell where the lookup value will be placed
        Application.WorksheetFunction.VLookup( _ 'vlookup function
        Worksheets("WS").Cells(d, 15).Value, _ 'value to look for
        Worksheets("WS").Range("X:Y"), 2, 0) 'range and column to look    
    Next

End Sub

我在这里做错了吗?

【问题讨论】:

  • 这个公式对我来说很好用。,只是......似乎对于d 的某些值,它在X 列中找不到Worksheets("WS").Cells(d, 15).Value

标签: vba excel vlookup


【解决方案1】:

尽管我删除了代码中的 cmets,但该代码确实对我有用。我唯一能看到的是你可能必须使用 iferror 语句以防万一没有找到。

Sub Test()

    Dim d As Long
    Dim lastrowx2 As Long, x, sh As Worksheet
    Set sh = Sheets("WS")

    With sh
        lastrowx2 = .Cells(.Rows.Count, 15).End(xlUp).Row

        For d = 2 To lastrowx2
            x = Application.VLookup(.Cells(d, 15).Value, .Range("X:Y"), 2, False)
            If IsError(x) Then x = "Not Found"
            Range("P" & d).Value = x
        Next d
    End With

End Sub

【讨论】:

  • 感谢@Vityata,已修复
【解决方案2】:

一般来说,Application.VLookupWorksheetFunction.VlookUp 友好一点。如果找不到,后者将抛出 运行时错误,而第一个 在单元格中写入 Excel 错误。因此,从一个非常简单的数据开始,然后尝试使其工作是一个好主意。假设你有这个:

这个想法是将 B 列的值写入 A 列,从查找范围“D:E”。或者在 range("A1") 上应该是 600,Range("B1") 500 等等。

这是最少的代码:

Sub TestMe()

    Dim curRow As Long
    Dim lastRow As Long

    lastRow = Worksheets(1).Cells(Rows.Count, "B").End(xlUp).Row
    Range("A:A").Clear

    For curRow = 1 To lastRow
        Cells(curRow, "A") = Application.VLookup(Cells(curRow, "B"), Range("D:E"), 2, 0)
    Next

End Sub

这就是你运行后的样子:

按照这个模型,您可以进一步构建您的代码。

【讨论】:

  • 假设是没有找到值,所以弹出错误
  • @Davesexcel - 在我的示例中,如果未找到该值,则单元格中会出现错误。
  • 谢谢@Vityata。我会听从你的指示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多