マクロを実行すると、L6:L29の値、行と行、M6:M29の値が一致するとメッセージが表示されます。完全一致の2つの範囲を比較するExcelマクロ
これを書くために長いと非効率的な方法があるかもしれない:
Public Sub MyMacro()
If Range("L6").Value = Range("M6).Value
AND Range("L7").Value = Range("M7).Value
AND Range("L8").Value = Range("M8).Value
etc.
Then
MsgBox "Both columns match!.", vbInformation, "Match!"
Exit Sub
End If
...
End Sub
しかし、私はそれぞれのペアを指定することなく2列/範囲内の各行を評価することができ、より効率的なコードを探しています。
私は同様の質問に対する以下の回答を見ましたが、1つの行(この場合は#5)だけを評価します。私は、範囲内のすべての行を評価する必要があります。Fastest way to check if two ranges are equal in excel vba
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
を。 – MacroMarc