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

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

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

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

販売データの準備

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

サンプル0010
[aside type=”normal”]コード内でWクリックすると、全選択できます。[/aside]
'変数の宣言
Dim WS1 As Object
Dim WS2 As Object
Dim WS3 As Object
Sub 販売データ()
    '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
End Sub

元のデータの作成方法

[article id=”2938,” cat_name=”1″ layout=”list” ] 1.デスクトップに作成した「確認用マクロのコピー」を開きます。
「開発」→「Visual Basic」でVBEを起動します。

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

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

•Sheet2

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

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

サンプル0015
[aside type=”normal”]コード内でWクリックすると、全選択できます。[/aside]
'変数の宣言
Dim WS1 As Object
Dim WS2 As Object
Dim WS3 As Object

Sub 販売実績表()
    '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
End Sub

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

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

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

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

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