【エクセルマクロ】データを抽出して別シートへ転記(動画あり)

VBA-条件一致で別シート転記-アイキャッチ ExcelVBA

エクセルマクロで、データを抽出して別シートへ転記するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

データを抽出して別シートへ転記

以下のExcelVBAを実行すると、別シートにデータを振り分けします。


Sub 条件に合うデータを別シート抽出()

Dim Matome_Sht As Worksheet
Dim DicName As Variant
Dim MyList As Variant
Dim myKey As Variant
Dim i, j, Q, Z As Long

    Set Matome_Sht = Sheets("まとめ")
    
    'A列~L列のデータを配列に格納
    MyList = Matome_Sht.Range("A1", Range("A" & Rows.Count). _
                     End(xlUp)).Resize(, 12).Value
    
    '連想配列
    Set DicName = CreateObject("Scripting.Dictionary")

    '重複しない「分類」を連想配列へ
    For i = 1 To UBound(MyList, 1)
        For j = 1 To UBound(MyList, 2)
            If MyList(1, j) = "分類" Then
                If Not DicName.Exists(MyList(i, j)) Then
                    DicName.Add MyList(i, j), MyList(i, j)
                End If
            End If
        Next j
    Next i
    
    Application.ScreenUpdating = False

    '連想配列をループ
    myKey = DicName.keys
    For i = 0 To UBound(DicName.items)

        '転記開始行
        Q = 2
        
        '新規シート作成し、「まとめ」シートのタイトル行を転記
        If myKey(i) <> "分類" Then
            Sheets.Add After:=ActiveSheet
            ActiveSheet.Name = myKey(i)
            ActiveSheet.Range("A1:C1").Value = Matome_Sht.Range("A1:C1").Value
    
            '二次元配列ループ
            For j = 1 To UBound(MyList, 1)
                For Z = 1 To UBound(MyList, 2)
        
                    '二次元配列と連想配列の結果が一致している場合
                    If MyList(j, Z) = myKey(i) Then
        
                         '別シートに値を転記
                         Sheets(myKey(i)).Cells(Q, 1) = MyList(j, Z)
                         Sheets(myKey(i)).Cells(Q, 2) = MyList(j, Z + 1)
                         Sheets(myKey(i)).Cells(Q, 3) = MyList(j, Z + 2)
                         Q = Q + 1
                    
                    End If
                Next Z
            Next j
        End If
    Next i

    Application.ScreenUpdating = True

    Set DicName = Nothing

End Sub

マクロ実行前

「まとめ」シートにデータが入力されています。

3列で1セットのデータの並びです。


 

マクロ実行後

「分類」ごとに新規シートを自動作成して、データを転記します。


 
 
この記事がお役に立ちますと幸いです。
 
・【エクセルマクロ】別シート転記を自動処理する方法まとめ
 

【エクセルマクロ】別シート転記(抽出)を自動化する:超便利20選
...

 

「スラスラ読める Excel VBA ふりがなプログラミング」
究極のやさしさを目指した、まったく新しいVBAの入門書
マクロの1行1行が何を意味していて、どう動くのかが理解できる!