检查excel vba中两个范围是否相等的最快方法

ste*_*tur 4 excel vba excel-vba

想象一下,您有两组数据,行数和列数相同.现在,您需要检查一组中单元格中的数据是否等于另一组中具有相同相对地址的单元格中的数据.如果对于行的所有单元格都是如此,则从两个集合中删除该行.我可以通过比较每个单元格来轻松编码,这对大型数据集不利.请参阅下面的代码,其中两列数据恰好位于同一张纸中,并且它们之间的列偏移为300.

Dim RngOb As Range
Dim c As Range

Range("A1", "B1").Select
set RngOb = Range(Selection, Selection.End(xlDown))

For Each c In RngOb.Rows
    If c.Cells(1,1).Value = c.Offset(0, 300).Cells(1,1).Value Then
        If c.Cells(1,2).Value = c.Offset(0, 300).Cells(1,2).Value Then    
            c.EntireRow.Delete
        End If
    End If
Next
Run Code Online (Sandbox Code Playgroud)

我的实际数据每天有超过100列和不同的列数.我正在寻找一种智能,快速的方法来处理大型数据集.我高度评价答案,反馈和批评.:d

Gar*_*ent 8

这是一种比较同构范围中两行的简单方法.............在本例中每个范围的第5行:

Sub RowCompare()
    Dim ary1() As Variant
    Dim Range1 As Range, Range2 As Range, rr1 As Range, rr2 As Range
    Set Range1 = Range("B9:F20")
    Set Range2 = Range("I16:M27")
    Set rr1 = Range1.Rows(5)
    Set rr2 = Range2.Rows(5)
    ary1 = Application.Transpose(Application.Transpose(rr1))
    ary2 = Application.Transpose(Application.Transpose(rr2))
    st1 = Join(ary1, ",")
    st2 = Join(ary2, ",")
    If st1 = st2 Then
        MsgBox "the same"
    Else
        MsgBox "different"
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

如果您在单元格中嵌入了逗号,则在JOIN中选择另一个字符