Excel VBA - 工作表数据比较

时间:2017-06-21 00:12:43

标签: excel vba

我正在比较两张数据。在此代码中,只有部分正在执行,如果我使用r1.value,则会抛出类型不匹配错误。 请提出改进​​建议。 这是我的代码:

Sub compareData()
Dim r As Range
Dim r1 As Range
Dim r2 As Range

    With Worksheets("Sheet1")
        Set r1 = Intersect(.Range("A:A"), .UsedRange)
    End With
    With Worksheets("Sheet2")
        Set r2 = Intersect(.Range("A:A"), .UsedRange)
    End With

    For Each r In r2
        If r1.Text <> r2.Text Then
            r.Offset(0, 4).Value = "Closed"
            Else
            r.Offset(0, 4).Value = 1
        End If
    Next r
End Sub

由于

1 个答案:

答案 0 :(得分:0)

r1是许多单元格的范围,因此它的值是一个数组。 r是单个单元格,因此其值为单个变量。您无法将数组与单个变量进行比较,因此类型不匹配。

如果您尝试检查r2中的每个文本(如果它存在于r1中),则此测试可以实现:

For Each r In r2
    If Application.CountIf(r1, r.Text) = 0 Then
        r.Offset(0, 4).Value = "Closed"
    Else
        r.Offset(0, 4).Value = 1
    End If
Next r

如果你想比较两个列在相同位置上的相等性,你可以用这样的循环来做:

Dim i as Long
For i = 1 to r2.rows.Count
   If r2.Cells(i, 1).Value2 = r1.Cells(i, 1).Value2 Then
        r2.Cells(i, 4).Value = "Closed"
    Else
        r2.Cells(i, 4).Value = 1
    End If
Next i