複数のワークシートにあるデータを、マクロで1つにまとめる方法を紹介します。
ワークシートSheet1→取引業者リスト
ワークシートSheet2→販売表
ワークシートSheet3→作成された販売実績表
[code] Sub サンプル0010() ‘変数の宣言 Dim WS1 As Object Dim WS2 As Object Dim WS3 As Object ‘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 [/code]
[code] Sub サンプル0015() ‘変数の宣言 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 End Sub [/code]
ワークシートSheet2→販売表
ワークシートSheet3→作成された販売実績表
取引業者リストと販売表の2つのデータから、業者ごとの販売実績表をマクロで作ります。
目次
販売データの準備
ワークシート1に取引業者リストを作成します。
ワークシート2に各業者ごとの販売データを入力します。
このデータは本来手入力をして作りますが説明の都合上、次のマクロで作成してください。
[code] Sub サンプル0010() ‘変数の宣言 Dim WS1 As Object Dim WS2 As Object Dim WS3 As Object ‘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 [/code]
元のデータの作成方法
1.デスクトップに作成した「確認用マクロのコピー」を開きます。
「開発」→「Visual Basic」でVBEを起動します。
2.「Module1」をWクリックして、「Module1」のコードウィンドウを表示します。
「Module1」に「サンプル0010」をコピーして貼り付けます。
3.マクロを実行するとワークシートに、次の2つのデータが入ります。
•Sheet1
•Sheet2
販売実績表を作成するマクロの作成
Sheet1とSheet2のデータを使って、業者ごとの販売実績表にまとめるためのマクロを作ります。
■ コード内を「Wクリック」で選択できます。[code] Sub サンプル0015() ‘変数の宣言 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 End Sub [/code]
販売実績表を作成するマクロの作成
1.「Module2」をWクリックして、「Module2」のコードウィンドウを表示します。
「Module2」に「サンプル0015」をコピーして貼り付けます。
2.マクロの画面で「販売実績表」を選択して、「実行」をクリックします。
3.マクロの実行結果は次のようになります。
以上で「販売実績表をマクロで作る」の説明を終わります。
目次