連想配列とは、配列の部屋(要素)を番号(位置)で指定するのではなく、任意の文字列で要素を指定できるような配列です。言葉でいうと難しいですけど、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チャンネルはこちら(動画一覧ページ)