【コピペでOK】エクセルVBAで配列から重複を簡単に削除する方法

Excel/VBA

VBAのDictionaryを活用し、配列を渡して重複を削除して返してくれる関数をご紹介したいと思います。

Dictionaryオブジェクトとは?

Dictionaryとは連想配列とも呼ばれていて、Keyをセットで格納するオブジェクトで、一つのDictionaryの中に重複するKeyは保持出来ない特徴を持ちます。

重複する値をDictionaryへ代入しようとするとエラーが吐かれるので、そこを利用してキャッチしてしまおうと言うのが今回の内容になります。

ちなみに連想配列はエクセルVBA以外でもJavaScript、PHP、Python等の言語でも使われています。

コード:DeleteArrayData

下記コードをコピペして頂ければそのまま利用可能です。
VBEの起動の仕方などは下記を参照してください↓

Microsoft Scripting Runtimeの参照設定も追加してください。

参照渡ししても良かったですが変えたくない場合も有ると思うので値渡しにしています。

実際の挙動確認

まずテスト用に下記雑コードを用意。

DeleteArrayDataにブレークを張ってからTest()マクロを実行して、ローカルウィンドウで通過後の変化を見てみましょう。

はい、無事DeleteArrayData通過後には重複していた値が削除されました!

あとがき

配列のカウンタを0から始めてるので、1からスタートの配列とかも併用してここを通したい場合はチェックするルートが必要です。

めちゃめちゃ汎用的なので 個人用マクロブックにでも保存して、ご自身の環境に合わせて使ってみてください~(ᵔᴥᵔ)

コメント