2017-06-21 217 views
1

我比较两张表中的数据。在这段代码中,只有其他部分正在执行,如果我使用r1.value,则会引发类型不匹配错误。 请提出改进​​建议。 这里是我的代码:Excel VBA - 工作表数据比较

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

r1是一个范围许多细胞,所以其值是一个数组。 r是一个单细胞,因此它的值是单个变体。您无法将数组与单个变体进行比较,因此类型不匹配。

如果您想为您在r2每个文本,如果它存在于R 1,本次测试可以实现它:

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 
+0

非常感谢你......! – SagarDixit

+0

非常感谢...!代码工作非常好。不过,我正在寻找其他方法来比较数组值。有没有其他方法可以比较这种“范围”值? – SagarDixit

+0

@ user3130361请参阅答案中的添加部分。 –