首页 文章

VBA Vlookup循环问题

提问于
浏览
0

我正在处理大量数据,其中我的工作簿包含多张数据,我想使用“SAP Pull”表单中的“URR”表中的列来查看相关数据 . 因此,由于SAP Pull是包含所有数据的主表单,而URR包含具有相关数据的列,因此我将相关数据列复制到SAP Pull并尝试编写vlookup循环以查找列的每一行的相应数据 . 问题是我不断抛出一个名为Method'range'的对象'_Worksheet失败的错误 . 这是我的代码,因为我很困惑为什么我一直遇到这个问题 .

Dim wsThis As Worksheet
Dim aCell As Range

Sheets("URR").Columns(1).copy Destination:=Sheets("SAP Pull").Columns(22)
Set wsThis = Sheets("SAP Pull")
    With wsThis
        For Each aCell In .Range("V2:V")
            .Cells(aCell.Row, 23) = Application.WorksheetFunction.VLookup( _
                                aCell.Value, wsThat.Range("A2:D3500"), False)
            Next aCell
         End With
End Sub

2 回答

  • 1

    您错过了第3个标准,它告诉Excel您要返回哪个列 .

    当在 wsThat.Range("A2:D3500") 中找不到 aCell.Value 时,您还需要处理该问题,当找不到该值时,它也会停止您的代码 .

    您需要以某种方式捕获错误 .

    Dim wsThis As Worksheet
    Dim aCell As Range
    
    Sheets("URR").Columns(1).copy Destination:=Sheets("SAP Pull").Columns(22)
    Set wsThis = Sheets("SAP Pull")
        With wsThis
            For Each aCell In .Range("V2:V65000")
                .Cells(aCell.Row, 23) = "Not Found"
                On Error Resume Next
                .Cells(aCell.Row, 23) = Application.WorksheetFunction.VLookup( _
                                    aCell.Value, wsThat.Range("A2:D3500"),4, False)
                On Error Goto 0
             Next aCell
         End With
    End Sub
    

    这将在每个单元格中放置 Not Found ,如果在该范围内找到该值,则它将把D列中的值放入该字段中 .

  • 0

    您在VlookUp中缺少一个Statement .

    .Cells(aCell.Row, 23) = Application.WorksheetFunction.VLookup( _
                                    aCell.Value, wsThat.Range("A2:D3500"),2, False)
    

    第三个声明适用于将返回的列 .

相关问题