エクセルマクロで、データを抽出して別シートへ転記する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行が何を意味していて、どう動くのかが理解できる!
リンク