VBA 関数 その他小技 EXCEL&VBA

エクセルで別シートのセルを合計する方法5選

Excelで複数のシートに分かれたデータを扱う場面は少なくありません。
特に月ごとのデータや部署別の集計などでは、「別シートの同じセル範囲を合計したい」といったニーズが頻繁に発生します。
本記事では、「エクセル 別シート セル 合計」という検索キーワードで検索されることを重視し、別シートにあるセルを合計する方法を5つご紹介します。
VBAを使った方法などは、初心者の方にもかんたんでオススメです。



① 基本の参照:シート名+セル番地

もっとも基本的な方法は、シート名+セル番地で指定するやり方です。

=Sheet1!A1 + Sheet2!A1 + Sheet3!A1

これは、「Sheet1」「Sheet2」「Sheet3」のA1セルの値を合計しています。
シート数が少ない場合や、指定するセルが固定されている場合に適しています。


SUM関数を使った合計

複数のシートにまたがるセル範囲を一括で合計するには、SUM関数が便利です。

=SUM (Sheet1!A1, Sheet2!A1, Sheet3!A1)

または、連続したシートの場合は、次のようにシートの範囲指定も可能です。

=SUM (Sheet1:Sheet3!A1)

この書き方は「Sheet1」から「Sheet3」までのすべてのシートにあるA1セルを合計します。
シートが連続している場合の最も効率的な方法です。


INDIRECT関数で動的に合計

シート名が変わったり、変数として参照したい場合には、INDIRECT関数を使うと便利です。

=SUM (INDIRECT ("'" & A1 & "'!A1"))

ここで、A1セルには「Sheet1」「Sheet2」などのシート名が入力されており、その内容を参照して合計します。


▲各シートのセルA1の値をピックアップできる

複数のシートを動的に処理したい場合は、VBAと組み合わせるか、次の方法を検討してください。


④ 3D参照で範囲全体を合計

Excelの3D参照機能を使うと、同じ構造の複数シートを一括で扱えます。
たとえば、各月の売上が「Jan」「Feb」「Mar」などのシートにある場合:

=SUM (Jan:Mar!B2:B10)

これは、「Jan」~「Mar」シートのB2~B10の範囲をまとめて合計します。
構成が揃っている月次報告やテンプレートに特に有効です。


⑤ VBAを使って柔軟に合計

大量のシートを一括処理したい場合や、条件付きで合計したい場合は VBA(マクロ)の活用も選択肢になります。

以下は、すべてのシートのA1セルを合計するマクロの例です。
"SumAcrossSheets" という関数そのものを作成します。

Function SumAcrossSheets(rngAddress As String) As Double
    Dim ws As Worksheet
    Dim total As Double
    total = 0
    For Each ws In ThisWorkbook.Worksheets
        total = total + ws.Range(rngAddress).Value
    Next ws
    SumAcrossSheets = total
End Function


▲Visual Basicエディタに貼り付けたイメージ

この関数をセルで以下のように使えば、すべてのシートのA1セルを合計できます:

=SumAcrossSheets("A1")

業務で多数のワークシートを扱う場合にとても重宝します。


まとめ

エクセルで別シートのセルを合計する方法は、基本的なシート参照から3D参照、さらにはINDIRECT関数VBAまで、用途に応じてさまざまな手段があります。
以下に用途別のおすすめを整理します:

用途 おすすめ方法
シート数が少ない場合 シート名+セル番地
シートが連続している場合 SUM(Sheet1:Sheet3!A1)
シート名をセルに入力したい場合 INDIRECT関数
同じ構造のテンプレート利用時 3D参照
柔軟な条件で集計したい場合 VBA(マクロ)

「エクセル」「別シート」「セル」「合計」といったキーワードでの検索を意識し、目的に応じた最適な方法を選んでください。

関連記事・広告






-VBA, 関数, その他小技, EXCEL&VBA
-, ,