アフィリエイト広告を利用しています

販売実績表をマクロで作る

複数のワークシートにあるデータを、マクロで1つにまとめる方法を紹介します。

ワークシートSheet1→取引業者リスト
ワークシートSheet2→販売表
ワークシートSheet3→作成された販売実績表

取引業者リストと販売表の2つのデータから、業者ごとの販売実績表をマクロで作ります。

目次

販売データの準備

ワークシート1に取引業者リストを作成します。
ワークシート2に各業者ごとの販売データを入力します。
このデータは本来手入力をして作りますが説明の都合上、次のマクロで作成してください。

■ コード内を「Wクリック」で選択できます。

Sub サンプル0010()
'変数の宣言
Dim WS1 As Object
Dim WS2 As Object
Dim WS3 As Object
<pre><code>'Setステートメント
Set WS1 = Worksheets("sheet1")
Set WS2 = Worksheets("sheet2")
Set WS3 = Worksheets("sheet3")

With WS1
    .Range("A1") = "取引業者リスト"
    .Range("A3") = "業者コード"
    .Range("B3") = "業者名"
    .Range("C3") = "担当者"
    .Range("D3") = "電話番号"

    .Range("A4") = "A0001"
    .Range("A5") = "A0002"
    .Range("A6") = "A0003"

    .Range("B4") = "山形食品"
    .Range("B5") = "ゼネラルマート"
    .Range("B6") = "どんと食品"

    .Range("C4") = "鈴木"
    .Range("C5") = "山本"
    .Range("C6") = "石井"

    .Range("D4") = "03-3333-2222"
    .Range("D5") = "044-222-6666"
    .Range("D6") = "03-3333-5555"
End With

With WS2
    .Range("A1") = "牛肉販売表"
    .Range("A8") = "鶏肉販売表"
    .Range("A15") = "豚肉販売表"

    .Range("A2,A9,A16") = "業者コード"
    .Range("B2,B9,B16") = "業者名"
    .Range("C2,C9,C16") = "販売数(kg)"
    .Range("D2,D9,D16") = "請求金額"

    .Range("A3,A10,A17") = "A0001"
    .Range("A4,A11,A18") = "A0002"
    .Range("A5,A12,A19") = "A0003"

    .Range("B3,B10,B17") = "山形食品"
    .Range("B4,B11,B18") = "ゼネラルマート"
    .Range("B5,B12,B19") = "どんと食品"

    .Range("C3") = 300
    .Range("C4") = 600
    .Range("C5") = 200

    .Range("C10") = 100
    .Range("C11") = 1200
    .Range("C12") = 150

    .Range("C17") = 300
    .Range("C18") = 2000
    .Range("C19") = 300

    .Range("D3") = 2550000
    .Range("D4") = 5100000
    .Range("D5") = 1700000

    .Range("D10") = 500000
    .Range("D11") = 6000000
    .Range("D12") = 750000

    .Range("D17") = 2250000
    .Range("D18") = 15000000
    .Range("D19") = 2250000

    '桁区切りを使用する
    .Range("C3:D19").NumberFormatLocal = "#,##0_ "
End With

'セルの背景色
WS1.Range("A3:D3").Interior.ColorIndex = 4

'Withステートメント
With WS2
    .Range("A2:D2").Interior.ColorIndex = 4
    .Range("A9:D9").Interior.ColorIndex = 4
    .Range("A16:D16").Interior.ColorIndex = 4
End With

'列幅の自動調整
WS1.Columns("A:D").AutoFit
WS2.Columns("A:D").AutoFit

'罫線を引く
WS1.Range("A3:D6").CurrentRegion.Borders.LineStyle = xlContinuous
WS2.Range("A2:D5").CurrentRegion.Borders.LineStyle = xlContinuous
WS2.Range("A9:D12").CurrentRegion.Borders.LineStyle = xlContinuous
WS2.Range("A16:D19").CurrentRegion.Borders.LineStyle = xlContinuous

WS2.Select</code></pre>
End Sub

元のデータの作成方法

デスクトップに作成した「確認用マクロのコピー」を開きます。
「開発」→「Visual Basic」でVBEを起動します。

「Module1」をWクリックして、「Module1」のコードウィンドウを表示します。
「Module1」に「サンプル0010」をコピーして貼り付けます。

マクロを実行するとワークシートに、次の2つのデータが入ります。
•Sheet1

•Sheet2

販売実績表を作成するマクロの作成

Sheet1とSheet2のデータを使って、業者ごとの販売実績表にまとめるためのマクロを作ります。

■ コード内を「Wクリック」で選択できます。

Sub サンプル0015()
<pre><code>'変数の宣言
Dim WS1 As Object
Dim WS2 As Object
Dim WS3 As Object

'SetステートメントでWorksheets("sheet1")をWS1にする
Set WS1 = Worksheets("sheet1")
Set WS2 = Worksheets("sheet2")
Set WS3 = Worksheets("sheet3")

With WS1
      'Destinationでコピー先の指定
    .Range("B4:D4").Copy Destination:=WS3.Range("A3")
    .Range("B5:D5").Copy Destination:=WS3.Range("A8")
    .Range("B6:D6").Copy Destination:=WS3.Range("A13")
End With

With WS3
    .Range("A4,A9,A14") = "牛肉"
    .Range("A5,A10,A15") = "鶏肉"
    .Range("A6,A11,A16") = "豚肉"
End With

With WS2
    .Range("C3:D3").Copy Destination:=WS3.Range("B4")
    .Range("C4:D4").Copy Destination:=WS3.Range("B9")
    .Range("C5:D5").Copy Destination:=WS3.Range("B14")
    .Range("C10:D10").Copy Destination:=WS3.Range("B5")
    .Range("C11:D11").Copy Destination:=WS3.Range("B10")
    .Range("C12:D12").Copy Destination:=WS3.Range("B15")
    .Range("C17:D17").Copy Destination:=WS3.Range("B6")
    .Range("C18:D18").Copy Destination:=WS3.Range("B11")
    .Range("C19:D19").Copy Destination:=WS3.Range("B16")
End With

'A列とC列の幅を調節する
With WS3
     .Columns("A").AutoFit
     .Columns("C").AutoFit
End With

'選択範囲に色を付ける
With WS3
    .Range("A3:C3").Interior.ColorIndex = 4
    .Range("A8:C8").Interior.ColorIndex = 4
    .Range("A13:C13").Interior.ColorIndex = 4
End With

WS3.Select</code></pre>
End Sub

販売実績表を作成するマクロの作成

「Module2」をWクリックして、「Module2」のコードウィンドウを表示します。
「Module2」に「サンプル0015」をコピーして貼り付けます。

マクロの画面で「販売実績表」を選択して、「実行」をクリックします。

マクロの実行結果は次のようになります。

以上で「販売実績表をマクロで作る」の説明を終わります。

目次