【エクセルマクロ】配列を比較して差分抽出:動画あり

vba-配列差分比較-アイキャッチ ExcelVBA

エクセルマクロで、配列を比較して差分を抽出する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

 

マクロ実行後

片側にあって、片側にないものを見つけてメッセージボックスに表示します。


 

動画の解説

動画ではコードの作り方・動作を確認できます。

クリックすると、このブログ上で再生されます^^

 
この記事がお役に立ちますと幸いです。
 

【エクセルマクロ】配列処理を自動化する:超便利12選
...

 

「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!