連想配列の解説(でもExcelでは使わないよって話)


連想配列とは、配列の部屋(要素)を番号(位置)で指定するのではなく、任意の文字列で要素を指定できるような配列です。言葉でいうと難しいですけど、Excelユーザーだったらお馴染みのVLOOKUP関数です。Excelのマクロで連想配列を使うのは、重複しないリスト(ユニークリスト)を作るのが主な目的ですが、それすらも現在のExcelでは簡単にできてしまいます。Excelマクロで連想配列を使う機会は、ほとんどないと言ってもいいでしょう。まぁ、使ってもいいですけどね。

↓左上にあるをクリックすると、チャンネル登録できます。ぜひ、チャンネル登録をお願いします。あなたのチャンネル登録が、私のやる気を維持向上してくれます(笑)

Sub Macro1()    ''Dictionary
    Dim i As Long, A
    With CreateObject("Scripting.Dictionary")
        On Error Resume Next
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            .Add Cells(i, 1).Value, Cells(i, 1).Value
        Next i
        A = .keys
        Range("E2").Resize(UBound(A) + 1) = WorksheetFunction.Transpose(A)
    End With
End Sub
Sub Macro2()    ''Collection
    Dim i As Long, A As New Collection
    On Error Resume Next
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        A.Add Cells(i, 1).Value, Cells(i, 1).Value
    Next i
    For i = 1 To A.Count
        Cells(i + 1, 5) = A(i)
    Next i
End Sub
Sub Macro3()    ''[重複の削除]機能
    Range("A:A").Copy Range("E1")
    Range("E1").CurrentRegion.RemoveDuplicates 1, xlYes
End Sub
Sub Macro4()    ''UNIQUE関数を使う
    Dim A
    A = WorksheetFunction.Unique(Range(Range("A2"), Cells(Rows.Count, 1).End(xlUp)))
    Range("E2").Resize(UBound(A)) = A
End Sub
Sub Macro5()    ''UNIQUE関数をセルに入れちゃう
    Range("E2").Formula2 = "=UNIQUE(A2:A1001)"
    With Range("E2#")
        .Value = .Value
    End With
End Sub
Sub 名前ごとにシート分割()
    Dim i As Long
    For i = 2 To Cells(Rows.Count, 5).End(xlUp).Row
        With Sheets("Sheet2")
            .Range("A1").AutoFilter 1, .Cells(i, 5)
            .Range("A1").CurrentRegion.Copy Sheets.Add.Range("A1")
            ActiveSheet.Name = .Cells(i, 5)
        End With
    Next i
End Sub

動画で使用したブックのダウンロード(20200714b.xlsm)

Office TANAKAのYouTubeチャンネルはこちら(動画一覧ページ)