我正在比较两张数据。在此代码中,只有部分正在执行,如果我使用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
由于
答案 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