ゴリラストロングの雑記帳

月収10万円の広告収入を目指す自称専業ライターのブログです。




【Excel VBA】売上一覧表から支店別にブック別で売上表を作成するエクセルマクロ。




どうも、ゴリラストロングです。

 

今回もエクセルマクロの記事を投稿したいと思います。

売上一覧表から支店別にブック別で売上表を作成するエクセルマクロを作成してみました。

 

以下がマクロ実行動画です。


【Excel VBA】ゴリラストロングの雑記帳 支店別売上表作成マクロ

 

 スポンサーリンク

 

 

 

以下が元データです。

f:id:gorilla-strong:20200224205256p:plain

上図のデータを支店別に下図の売上表テンプレに転記していきます。

なお、ブックは支店別に作成され、ブック名は支店名に変更されます。

f:id:gorilla-strong:20200224205420p:plain

 

以下がマクロ実行後です。

f:id:gorilla-strong:20200224205750p:plain

 

f:id:gorilla-strong:20200224210019p:plain

各支店別にブックが作成され、それぞれに転記が完了しています。

 

 スポンサーリンク

 

 

以下がソースコードです。

 

Sub 支店別売上表作成()

Dim data, temp As Object
Set data = Workbooks("ゴリラストロングの雑記帳.xlsm").Worksheets("売上データ")
Set temp = Workbooks("ゴリラストロングの雑記帳.xlsm").Worksheets("売上テンプレ")

Dim STnum As Long
STnum = data.Range("J2")

data.Range("B:B").Copy
data.Range("K1").PasteSpecial Paste:=xlPasteValues

data.Range("K:K").RemoveDuplicates Columns:=Array(1), Header:=xlYes

Dim user As String
user = InputBox(prompt:="ユーザー名を入力してください。")

Dim lastrowK As Long
lastrowK = data.Cells(Rows.Count, 11).End(xlUp).Row

For k = 3 To lastrowK

Dim STname As String
STname = data.Range("K" & k)

Workbooks.Add
Workbooks(k - 1).SaveAs Filename:="C:\Users\" & user & "\Desktop\" & STname & ".xlsx"
temp.Cells.Copy Workbooks(k - 1).Worksheets(1).Range("A1")
Workbooks(k - 1).Worksheets(1).Range("A1") = STname





j = 4


Dim lastrowB As Long
lastrowB = data.Cells(Rows.Count, 2).End(xlUp).Row

For i = 3 To lastrowB

If Workbooks(k - 1).Worksheets(1).Range("A1") = data.Range("B" & i) Then
    Workbooks(k - 1).Worksheets(1).Range("B" & j) = data.Range("C" & i)
    Workbooks(k - 1).Worksheets(1).Range("C" & j) = data.Range("D" & i)
    Workbooks(k - 1).Worksheets(1).Range("D" & j) = data.Range("E" & i)
    Workbooks(k - 1).Worksheets(1).Range("E" & j) = data.Range("F" & i)
    Workbooks(k - 1).Worksheets(1).Range("F" & j) = data.Range("G" & i)

j = j + 1

End If

Next

Next


End Sub

Workbooks(k - 1).SaveAs Filename:="C:\Users\" & user & "\Desktop\" & STname & ".xlsx"

上記のコードがファイル名を変換しているコードです。

ここの処理が最も難しかったです。

 

以上、ゴリラストロングでした。

 

 スポンサーリンク