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

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




【Excel VBA】納品データから取引先ごとに納品書を別々のブックで作成するマクロ。




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

 

 

 

 

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

納品データから取引先ごとに納品書を別々のブックで作成するマクロを作成してみました。

 

 

 スポンサーリンク

 

 

以下が元データです。

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

G列の出力する取引先名の取引先のデータを各取引先ごとに作成します。

 

 

 

 

 

別シートに作成した下図のテンプレに入力します。

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

 

 

 スポンサーリンク

 

 

 

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

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

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

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

今回は三つの取引先分のデータが作成できました。

 

 

 スポンサーリンク

 

 

 

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

Sub 見積書作成()

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

Dim Glastrow As Long
    Glastrow = data.Cells(Rows.Count, 7).End(xlUp).Row

Dim num As Long
    num = WorksheetFunction.CountA(data.Range("G2:G" & Glastrow))



    For i = 2 To num + 1

        Workbooks.Add
    
        temp.Cells.Copy Workbooks(i).Worksheets(1).Range("A1")
    
        Workbooks(i).Worksheets(1).Range("B4") = data.Range("G" & i)

    Next


Dim lastrow As Long
    lastrow = data.Cells(Rows.Count, 1).End(xlUp).Row


    For m = 2 To num + 1

    j = 7

        For k = 2 To lastrow



        If Workbooks(m).Worksheets(1).Range("B4") = data.Range("A" & k) Then
            Workbooks(m).Worksheets(1).Range("B" & j) = data.Range("B" & k)
            Workbooks(m).Worksheets(1).Range("C" & j) = data.Range("C" & k)
            Workbooks(m).Worksheets(1).Range("D" & j) = data.Range("D" & k)
            Workbooks(m).Worksheets(1).Range("E" & j) = data.Range("E" & k)
    
    j = j + 1
    
        End If

        Next

    Next


End Sub

 

 

 

 

 j = j + 1

上記のコードを書く位置が分からずに2時間くらい躓きました。

for文の制御はいつも手探りで行ってしまいます。

今後の課題ですね。

 

 

 

 

 

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

 

スポンサーリンク