Sub TEST1()
'「営業部」でフィルタ
Range("A1").AutoFilter 1, "営業部"
'シートを追加
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "営業部" 'シート名を変更'フィルタ結果を転記
Sheets("Sheet1").Range("A1").CurrentRegion.Copy Range("A1")
Sheets("Sheet1").Range("A1").AutoFilter 'オートフィルタを解除
End Sub
では、ポイントごとに実行していきます。
VBAコードを実行してみる
「営業部」でフィルタします。
シートを追加します。
追加したシート名を変更します。
フィルタ結果を追加したシートに転記します。
オートフィルタを解除します。
これで、「営業部」を別シートに転記できます。
「営業部」を別シートに転記できた
「営業部」を別シートに転記できました。
すべての部署を別シートに転記
次は、すべての部署を別シートに転記してみます。
先ほど作成したVBAコードを「For~Next」でループする感じです。
Sub TEST2()
Dim A
'部署リストを作成
A = Array("営業部", "企画部", "総務部")
For i = 0 To UBound(A)
'部署でフィルタ
Sheets("Sheet1").Range("A1").AutoFilter 1, A(i)
'シートを追加
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = A(i) 'シート名を変更'フィルタ結果を転記
Sheets("Sheet1").Range("A1").CurrentRegion.Copy Range("A1")
Sheets("Sheet1").Range("A1").AutoFilter 'オートフィルタを解除
Next
End Sub
Sub TEST3()
Dim B
'辞書を作成
Set B = CreateObject("Scripting.Dictionary")
With Sheets("Sheet1")
'部署をループ
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
'辞書に登録されていない場合
If B.exists(.Cells(i, "A").Value) = False Then
'辞書に登録
B.Add .Cells(i, "A").Value, 0
End If
Next
End With
Dim A
A = B.keys '部署リストを取得
For i = 0 To UBound(A)
'部署でフィルタ
Sheets("Sheet1").Range("A1").AutoFilter 1, A(i)
'シートを追加
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = A(i) 'シート名を変更'フィルタ結果を転記
Sheets("Sheet1").Range("A1").CurrentRegion.Copy Range("A1")
Sheets("Sheet1").Range("A1").AutoFilter 'オートフィルタを解除
Next
End Sub