Sub TEST1()
'「A」でフィルタ
Range("A1").AutoFilter 1, "A"
'シートを追加
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "A" 'シート名を変更'フィルタ結果を転記
Sheets("Sheet1").Range("A1").CurrentRegion.Copy Range("A1")
Sheets("Sheet1").Range("A1").AutoFilter 'フィルタ解除
End Sub
では、ポイントごとに実行してみます。
「A」の取引先を別シート転記
実行すると、「A」でフィルタされます。
シートを追加します。
シート名を変更します。
フィルタ結果をコピーします。
オートフィルタを解除します。
これで、「A」の取引先を別シートにできます。
「A」の取引先を別シートに転記できた
「A」の取引先を別シートにできました。
「A~C」の取引先を別シート転記
次は、「A~C」の取引先を別シート転記するしてみます。
3つの取引先を、別シートに転記するVBAコードになります。
Sub TEST2()
Dim A
'取引先リストを作成
A = Array("A", "B", "C")
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
では、VBAコードを実行してみます。
取引先ごとに別シート転記する
「A」の取引先を別シートに転記できます。
さらに実行して、「B」の取引先を別シートに転記できます。
最後に、「C」の取引先を別シートに転記できます。
こんな感じで、3つの取引さきを、別シートに転記できます。
取引先リストを作成して、取引先ごとに別シート転記
次は、「取引先リスト:を作成して、取引先ごとに別シート転記してみます。
取引先リストを自動で作成て、作成した取引先リストを塚ttえ、転記するという感じです。
Sub TEST3()
Dim B
'辞書を作成
Set B = CreateObject("Scripting.Dictionary")
Dim C
'元データの取引先を取得
With Sheets("Sheet1")
C = .Range("A2:C" & .Cells(Rows.Count, "A").End(xlUp).Row)
End With
'取引先リストを作成
For i = 1 To UBound(C)
If B.exists(C(i, 1)) = False Then
B.Add C(i, 1), 0
End If
Next
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