VBA100本ノック 39本目:数値リストの統合(マージ)
こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。
上記リンク先から、問題文を転載。
重複除去は個人的に、日常の業務でも低~中頻度で発生する事案。
私は面倒くさがりなので、たいていの場合、Keyの重複が出来ない
Dictionaryに突っ込んでこれを行っている。
Sub VBA_100Knock_39() ' 元データ。 Dim SrcArray As Variant SrcArray = Range("A1:B8") ' 重複除去用の辞書。 Dim Dict As Scripting.Dictionary Set Dict = New Scripting.Dictionary ' 配列ソート用。 Dim ArrayList As Object Set ArrayList = CreateObject("System.Collections.ArrayList") ' eはElementの意。 Dim e As Variant ' keyの重複を許さない辞書の特性を利用して重複除去。 ' この場合、item不問。 For Each e In SrcArray If e <> vbNullString Then If Not Dict.Exists(e) Then Dict(e) = e ArrayList.Add e End If End If Next ' ArrayListクラスのSortメソッドで昇順に並べ替えたのち、 ' ArrayListクラスのToArrayメソッドで配列に戻す。 Dim arr As Variant ArrayList.Sort arr = ArrayList.toarray ' 貼付け。 Range("C1").Resize(UBound(arr) + 1) = _ WorksheetFunction.Transpose(arr) End Sub
※冒頭リンク先の解答例および解説も、ぜひご一読ください。
参考まで。