エクセルマクロで、配列を比較して差分を抽出するVBAコードをご紹介します。
配列の要素数が異なっていても、差異抽出ができます。
このページのマクロコードは、コピペで使えます。
ぜひお試しください!
配列を比較して差分を抽出
以下のマクロを実行すると、一次元配列の値を比較して差分を抽出します。
Sub 配列比較差分取得()
Dim i As Long
Dim j As Long
Dim Q As Long
Dim R As Long
Dim A() As Variant
Dim B() As Variant
Dim C() As Variant
Dim msg1 As String
Dim msg2 As String
Dim Result As Variant
Dim Buf As Variant
'対象文字
A = Array("みかん", "めろん", "いちご", "きゃべつ", "れもん")
B = Array("りんご", "じゃがいも", "さくらんぼ", "めろん", "いちご", "れもん", "ごぼう")
For R = 1 To 2
Q = 1
ReDim Preserve C(Q)
If R = 1 Then
Buf = A
Else
Buf = B
End If
'配列をループ
For i = 0 To UBound(Buf)
'配列を比較
If R = 1 Then
Result = Filter(B, A(i))
Else
Result = Filter(A, B(i))
End If
'片側にあって、片側にないものを取得
If UBound(Result) = -1 Then
ReDim Preserve C(Q)
C(Q) = Buf(i)
Q = Q + 1
End If
Next i
For j = 1 To UBound(C)
If R = 1 Then
msg1 = msg1 & C(j) & vbCrLf
Else
msg2 = msg2 & C(j) & vbCrLf
End If
Next j
Erase C
Next R
MsgBox "【AにあってBに無い】" & vbCrLf & msg1 & _
vbCrLf & "【BにあってAに無い】" & vbCrLf & msg2
End Sub
マクロ実行後
片側にあって、片側にないものを見つけてメッセージボックスに表示します。
この記事がお役に立ちますと幸いです。
・【エクセルマクロ】配列処理を自動化する使用例まとめ
【エクセルマクロ】配列処理を自動化する:使用例16選
...
「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!
リンク