例文を使って繰り返し業務を時短

【マクロ・VBA】 串刺し計

エクセル、マクロ、VBAで各シートを串刺し計を行う VBA

串刺し計

このExcelマクロは、3つのワークシートの特定の範囲内のセルの値を合計して、最終的な合計値を計算するためのものです。

    Sub 串刺し計()

    Dim WorksWS() As Variant
    
    ReDim WorksWS(1 To 3)  '配列を再定義
    
    
    WorksWS(1) = "4月!R2C3:R33C14"      '集計元のワークシート名:セル範囲を指定
    WorksWS(2) = "5月!R2C3:R33C14"
    WorksWS(3) = "6月!R2C3:R33C14"

    Worksheets("合計").Range("C2").Consolidate Sources:= _
        Array(WorksWS()), Function:=xlSum  '3つのシートを集計(合計:Sum)します。
        
    Range("C2:C33").Select
    Range("C33").Activate
    ActiveCell.FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
    Range("E15").Select
    ActiveWindow.SmallScroll Down:=15
    Range("C33").Select
    Selection.AutoFill Destination:=Range("C33:N33"), Type:=xlFillDefault
    
    Range("O2").Activate
    ActiveCell.FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
    Range("O2").Select
    Selection.AutoFill Destination:=Range("O2:O33"), Type:=xlFillDefault
    Range("O2:O33").Select

MsgBox "完了"
End Sub

解説

  • まず、WorksWSという配列を作成します。これは、集計元のワークシートの名前と、そのワークシートの集計範囲を指定するために使用されます。ここでは、4月、5月、6月の3つのワークシートのそれぞれのセル範囲を指定しています。
  • 次に、Worksheets(“合計”).Range(“C2”)を選択し、Consolidateメソッドを使用して、3つのワークシートの合計を計算します。この場合、ConsolidateメソッドのSourcesパラメータに、WorksWS配列を渡しています。FunctionパラメータはxlSumで、合計を計算するために使用されます。
  • 次に、C2からC33までの範囲を選択し、SUM関数を使用して、最終的な合計値を計算するための式を入力します。C33からN33までの範囲を選択し、C33の式を自動的にコピーして貼り付けるために、AutoFillメソッドを使用します。
  • 最後に、O2からO33までの範囲を選択し、SUM関数を使用して、各行の合計値を計算するための式を入力します。これにもAutoFillメソッドを使用して、各行に式を自動的にコピーして貼り付けます。
  • 最後に、完了メッセージを表示するために、MsgBoxを使用します。

ダミーデータのダウンロード

コメント

タイトルとURLをコピーしました