エクセルに作成した「シート名リスト」を使って、新しく作成したシートの名前を変更するVBAです。
この記事では、シート名の変更とオートフィルタの設定を紹介します。
会社全体のデータを一つのシートにまとめてみたものの、それを営業所ごとに配布する時は、営業所のデータだけが欲しいって言われるんですよ。
他の営業所の数字はいらないって。
関係のないデータは不要ということですね。
データを作るたびに、オートフィルタで抽出して、新しいシートに貼り付けて、シート名を変更してって、面倒なんですよね。
それではまずはじめに、新しいシートを作成して、シート名を変更するVBAを紹介します。
リストから新しいシートを作成するVBA
作成するシート名のリストを、Sheets「シート名」のA列に1行目から記載
シートは「シート名」のみとする
Sub シート作成()
Dim a, s, x, y As Long
Dim MemberN() As String
a = Sheets(“シート名”).Range(“A1”).End(xlDown).Row
ReDim MemberN(a – 1)
For s = 0 To a – 1
MemberN(s) = Sheets(“シート名”).Cells(s + 1, 1)
Next s
For x = 0 To a – 1
Sheets.Add After:=Sheets(x + 1)
Sheets(x + 2).Name = MemberN(x)
Next x
End Sub
新しいシートを作成するVBAの解説
次は、データシートをコピーして新しいシートを作成して、オートフィルタで抽出するVBAです。
新しいシートの作成とオートフィルタを同時に行うVBA
Sheets「データ」
1行目:タイトル
A列:営業所コード
その他の列に各種項目
Sheets「営業所」
1行目:タイトル
A列:営業所名
B列:営業所コード
Sub シート作成()
Dim a, b, s, x As Long
Dim MemberN() As String
Dim MemberE() As Long
a = Sheets(“営業所”).Range(“A1”).End(xlDown).Row
b = Sheets(“データ”).Range(“A1”).End(xlDown).Row
ReDim MemberN(a – 2)
ReDim MemberE(a – 2)
For s = 0 To a – 2
MemberN(s) = Sheets(“営業所”).Cells(s + 2, 2)
MemberE(s) = Sheets(“営業所”).Cells(s + 2, 1)
Next s
For x = 0 To a – 2
Sheets(“データ”).Copy After:=Sheets(x + 2)
With Sheets(x + 3)
.Name = MemberN(x)
.Rows(“1:1”).AutoFilter 1, MemberE(x)
End With
Next x
End Sub
新しいシートの作成とオートフィルタを同時に行うVBAの解説
応用すれば営業所コードを範囲指定するなど可能です。
コメント