重複排除して二次元配列を作る(Collection版)

単に重複排除の判定だけなら、わざわざ Dictionary を使わなくても Collection で充分です。
 
ただ、Collection の場合もちょっと注意が必要です。
Addメソッドの Key は文字列しか受け付けてくれません。
なので、前回のように KEY が数値の場合は、CStr 関数で変換するとか Text プロパティを使うとかする必要があります。
 

例えば、図のようなデータがシートにあり、A列がユニークな行について、A,B列のデータを二次元配列に入れる場合を考えてみます。
※.A列は数値です。

Sub Macro2()
  Dim dicA As Collection
  Dim rngU As Range
  Dim r As Range
  Dim i As Long
  Dim aryX() As String

  Set dicA = New Collection
  Set rngU = Worksheets("Sheet1").Range("A2:A8")

  On Error Resume Next
  For Each r In rngU
    Err.Clear
    ' ◆◇◆◇◆◇◆◇◆◇
    dicA.Add Item:="", Key:=r.Value
    'dicA.Add Item:="", Key:=r.Text ' OK
    ' ◆◇◆◇◆◇◆◇◆◇
    If Err.Number = 0 Then
      i = i + 1
      ReDim Preserve aryX(1 To 2, 1 To i) As String
      aryX(1, i) = r.Text
      aryX(2, i) = r.Offset(, 1).Text
      Debug.Print aryX(1, i), aryX(2, i), i
    End If
  Next r
  On Error GoTo 0
End Sub

これも、◆◇◆で印を付けた部分がNGです。
後ろにコメントアウトしたコードのようにすればOKです。
 
例によって、On Error Resume Next を使っているので、バグっても気づきにくいのが困りものです。
まぁ、こっちの方は結果を見れば一目瞭然なので、Dictionary の方より気づきやすいです。
 
※.Excel World の 2007年7月16日 17:26 の日記をコピーしています。
http://excel.sns.fc2.com/excel/