如何使用 Excel VBA 检查范围中的每个单元格是否在另一个范围内找到?

时间:2021-06-03 11:52:42

标签: excel vba

我在同一个工作簿中有关于 Worksheets("North").Range("B3:B500") 的数据和关于 Worksheets("Auto").Range("A2:A22") 的数据。 如何检查第一个 Range 中的每个 Cell 是否在第二个 Range 上找到,如果存在,将运行某些代码 (Offset )?

此行中以下代码的问题: If Cell.value = Worksheets("Auto").Range("A2:A22") 然后

Sub Check_Range()

Dim WorkOrder As Range
Dim Closed_Data As Range
Dim Cell As Object

Set WorkOrder = Worksheets("North").Range("B3:B500")

Set Closed_Data = Worksheets("Auto").Range("A2:A22")

     For Each Cell In WorkOrder
    
        If Cell.value = Worksheets("Auto").Range("A2:A22") Then
        
         Cell.Offset(, 6).value = "Close"
         Cell.Offset(, 7).value = Now

        End If
    Next Cell
    
End Sub

1 个答案:

答案 0 :(得分:1)

无法将一个单元格的值与一个范围进行比较。试试这个代码:

Sub Check_Range()

    Dim WorkOrder As Range
    Dim Closed_Data As Range
    Dim Cell As Object
    
    Set WorkOrder = Worksheets("North").Range("B3:B500")
    Set Closed_Data = Worksheets("Auto").Range("A2:A22")
        
    On Error Resume Next
    For Each Cell In WorkOrder
        With Cell
            WorksheetFunction.Match .Value, Closed_Data, 0  'value search
            If Err.Number = 0 Then  ' if there is no error, then the value was found
                .Offset(, 6).Value = "Close"
                .Offset(, 7).Value = Now
            End If
            Err.Clear
        End With
    Next Cell
    On Error GoTo 0
End Sub
相关问题