Excel ○行おきの合計を求める数式9選

Excel ○行おきの合計を求める数式9選 Excel

本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!

はじめに:その集計、まだ手作業でやっていませんか?

「ゴリラ1の合計、ゴリラ2の合計、ゴリラ3の合計…」

実務では、このように同じ構造が繰り返される表から、特定の項目(今回は「合計」行)だけを抜き出して集計したい場面が頻繁にあります。

Excel画像

多くの人が、電卓を片手に、あるいはCtrlキーを押しながら一つひとつセルを選択して、地道に合計しているのではないでしょうか。

「行が増えたら大変だし、セルの選択ミスも怖い…
もっとスマートに、一瞬でこの作業を終わらせる方法はないの?」

もちろん、あります!

今回の記事は、この「○行おきの合計」という、実務あるあるの悩みを解決するための関数テクニック集です。

単純な方法から、伝統的な技、最新関数の活用法、そして関数パズルの領域まで、様々な角度からアプローチします。

この記事を読み終える頃には、あなたの集計作業は劇的に速く、そして正確になっているはずです。

さあ、面倒な手作業から卒業しましょう!

今回のミッション

現在の状態: 各ゴリラの「午前」「午後」「合計」のデータが並んだレポートがあります。

Excel画像

目指すゴール: 表の下部にある集計欄(23行目)に、B列が「合計」となっている行の数値だけを、列ごとに集計します。

具体的には、まずC23セルに数式を一つ作成します。

そして、その数式を右方向(I23セルまで)にフィルコピーするだけで、すべての列の合計が正しく計算されるようにします。

Excel画像

今回は、まず「1列ずつ計算する方法」を7つ、最後に「全列を一度に計算する方法」を2つ紹介します。

Part 1:1列ずつ合計する方法

まずは基本編。C23セルに数式を入力し、それを右にコピーしていく方法です。

アプローチ1:SUM + 手作業(基本にして最大の罠)

考えかた

最も原始的で、誰もが最初に思いつく方法です。

合計したいセルを、SUM関数の中で一つひとつ、マウスでクリック(または手入力)して指定します。

数式と解説

C23セルに、以下の数式を入力します。

=SUM(C5,C9,C13,C17,C21)

Excel画像

確かに、これでも正しい答えは出ます。

しかし、もし集計対象のゴリラが100頭いたらどうでしょう?

100個のセルを一つひとつクリックするのは、現実的ではありません。

時間がかかるだけでなく、クリックミスや指定漏れなど、ヒューマンエラーの温床になります。

これは、「スマートな解決策」とは言えませんね。

では、どうすればこの手間を省けるのでしょうか?

アプローチ2:SUM + IF + MOD(汎用性最強の伝統技)

考えかた

ここからが本番です。

B列の「合計」という文字を使わずに、「行の位置関係」だけに着目して合計する方法です。

表をよく見ると、合計したい行(5, 9, 13, 17, 21行)には、「4行ごとに現れる」という規則性があります。

この「Nごとに繰り返す」という規則性を見つけるのに最適なのが、MOD関数です。

MOD関数は「割り算の余り」を求める関数で、これを使って「4で割ったときの余りが●になる行」という条件を作り、合計します。

数式と解説

C23セルに、以下の数式を入力します。

=SUM(IF(MOD(ROW(C3:C21),4)=1,C3:C21))

Excel画像

この数式は、複数の関数が連携しています。内側から見ていきましょう。

ROW(C3:C21)

まず、ROW関数が、計算範囲C3:C21の「行番号」を配列として取得します。結果は {3;4;5;...;21} となります。

Excel画像

MOD(…, 4)

次に、MOD関数が、それらの行番号を「4」で割ったときの「余り」を計算します。結果は {3;0;1;2;3;0;1;...} という余りの配列になります。

… = 1: この余りの配列が「1」と等しいかどうかを判定します。

合計したい5, 9, 13, 17, 21行は、すべて4で割ると余りが「1」になるため、その行だけがTRUE、他はFALSEとなります。

Excel画像

IF(…, C3:C21)

IF関数が、TRUEとなった行に対応するC列の数値だけを抜き出し、他はFALSEとした配列を生成します。(例:{FALSE;FALSE;11;...}

Excel画像

SUM(…)

最後に、SUM関数がこの配列を合計します。SUM関数は論理値(FALSE)を無視して数値だけを合計してくれるため、見事に「合計」行だけの集計ができるのです。

この方法は、どんなN行おきの集計にも応用できる、非常に汎用性が高い伝統的なテクニックです。

アプローチ3:SUM + 演算子(IFを使わないスマート計算)

考えかた

やっていることはアプローチ2と全く同じです。

しかし、IF関数を使う代わりに、論理値の計算(ブール演算)を利用して、より短い数式で実現します。

Excelでは、計算式の中で論理値のTRUEは「1」、FALSEは「0」として扱われる性質があります。

この性質を利用し、「条件に合う行(TRUE=1)の数値だけを掛け算で残す」という処理を行います。

数式と解説

C23セルに、以下の数式を入力します。

=SUM((MOD(ROW(C3:C21),4)=1)*(C3:C21))

Excel画像

(MOD(ROW(C3:C21),4)=1) の部分が、アプローチ2と同様に {FALSE;FALSE;TRUE;...} という論理値の配列を生成します。

この配列に、C列の数値配列 {6;5;11;...} を直接掛け合わせます。

すると、Excelは内部で以下のような計算を行います。

  • FALSE * 6 → 0 * 6 = 0
  • FALSE * 5 → 0 * 5 = 0
  • TRUE * 11 → 1 * 11 = 11

結果として、条件に合わない行はすべて「0」に、条件に合う行の数値だけがそのまま残る配列が生成されます。

Excel画像

これを最後にSUM関数で合計すれば、目的の答えが得られます。

【補足】なぜSUMPRODUCTではなくSUM?
Excel 2019以前のバージョンでは、このような配列同士の計算結果を正しく合計するにはSUMPRODUCT関数を使うのが一般的でした。しかし、スピル機能が搭載された現代のExcel(Web版やMicrosoft 365など)では、SUM関数自体が配列をネイティブに扱えるように強化されたため、SUM関数だけで問題なく計算できるのです。

アプローチ4:SUM + INDEX + SEQUENCE(最新関数による可読性の追求)

考えかた

最新の動的配列関数であるSEQUENCE関数を使った、非常に可読性が高いアプローチです。

SEQUENCE関数は、指定したルールで連続した数値の配列を生成する関数です。

これを使って、合計したい行の位置(3番目、7番目、11番目…)を直接指定する配列を作り出し、INDEX関数でその位置にある値をピンポイントで抜き出します。

数式と解説

C23セルに、以下の数式を入力します。

=SUM(INDEX(C3:C21,SEQUENCE(5,1,3,4)))

Excel画像

SEQUENCE(5,1,3,4)

この数式の主役です。SEQUENCE(行数, 列数, 開始値, ステップ)という書式で使います。

ここでは「5行1列で、3から始まり、4ずつ増える」数値の配列を生成するよう命令しています。

結果は {3;7;11;15;19} という配列になります。これは、計算範囲C3:C21の中での「合計」行の相対的な位置と一致しますね。

Excel画像

INDEX(C3:C21, …)

INDEX関数が、C3:C21の範囲の中から、SEQUENCEが生成した配列の位置(3番目、7番目…)にある値をすべて抜き出します。

結果として、{11;16;15;18;13} という「合計」だけの値の配列が生成されます。

Excel画像

SUM(…)

最後に、SUM関数がこれらの値を合計します。

数式が、行っている処理をそのまま語っているような形で、非常に分かりやすいのが特徴です。

アプローチ5:SUM ÷ 2(数学的発想によるショートカット)

考えかた

ここで少し視点を変えてみましょう。

今回の表の構造をよく見ると、各ゴリラの「合計」は、その上の「午前」と「午後」を足したものです。

Excel画像

「ということは…全部の数値を合計して、単純に2で割れば、合計行だけの合計になるのでは?」

という、数学的なアプローチです。

数式と解説

C23セルに、以下の数式を入力します。

=SUM(C3:C21)/2

Excel画像

非常にシンプルですが、これは今回の表が「午前+午後=合計」という綺麗な構造をしているからこそ使える、限定的なショートカットです。

常に使えるわけではありませんが、データの構造を見抜くことで、複雑な計算を単純な四則演算に置き換えられる良い例です。

アプローチ6:SUMIF(B列を活用する王道中の王道)

考えかた

ここからは、B列の「合計」という文字を積極的に使っていく、実務における最もオーソドックスで堅実な方法です。

SUMIF関数は、まさにこのためにあると言っても過言ではない関数です。

もしB列が”合計”だったら、対応するC列の数値を合計しなさい」と、Excelに直接命令します。

この方法の最大のメリットは、将来的に行が追加・削除されても、数式を修正する必要がない点です。

数式と解説

C23セルに、以下の数式を入力します。

=SUMIF($B$3:$B$21,”合計”,C3:C21)

Excel画像

この数式で最も重要なのが、ドルマーク $ の使い方です。

  • $B$3:$B$21 (絶対参照): B列の条件範囲には、行と列の両方に$が付いています。これは、数式を右にコピーしても、常にB列の3行目から21行目を参照し続けるように「固定」する、という意味です。
  • "合計": 検索する条件の文字列です。
  • C3:C21 (相対参照): 合計対象範囲のC列には、$が付いていません。これは、数式を右のD列にコピーしたら「D3:D21」に、E列にコピーしたら「E3:E21」に、と参照先が自動的に変化するように「固定しない」という意味です。

この「固定する部分(絶対参照)」と「変化させる部分(相対参照)」を正しく使い分けることが、フィルコピーできる数式を作る上での最大の秘訣です。

アプローチ7:SUM + FILTER(現代版SUMIF)

考えかた

最新のExcelに搭載されたFILTER関数を使った、可読性の高い方法です。

SUMIF関数とやっていることは似ていますが、処理のステップがより明確です。

  1. まず、FILTER関数で、B列が「合計」である行の、C列の数値だけをすべて抜き出します。
  2. 次に、抜き出された数値の配列をSUM関数で合計します。

数式と解説

C23セルに、以下の数式を入力します。

=SUM(FILTER(C3:C21,$B$3:$B$21=”合計”))

Excel画像
  • $B$3:$B$21="合計": B列が「合計」である行をTRUEとする条件配列を作ります。SUMIF同様、フィルコピーのために絶対参照にしています。
  • FILTER(C3:C21, ...): C列のデータの中から、条件がTRUEの行の値だけをフィルタリング(抽出)し、新しい配列を生成します。
  • SUM(...): 最後に、フィルタリングされた配列を合計します。
Excel画像

SUMIF関数を知らなくても、FILTERSUMという基本的な関数の組み合わせで同じことが実現できる、非常に分かりやすい数式です。

Part 2:全列を一度に合計する方法

最後に、C23セルに数式を一つ入れるだけで、I23までの全列の合計を一度にスピルさせて表示する方法に挑戦します。

アプローチ8:配列の足し算(シンプルだが、非現実的)

考えかた

Excelのスピル機能は、配列同士の計算をサポートしています。

つまり、C5:I5 という横一行の配列と、C9:I9 という横一行の配列を足し算すると、各列の合計が計算された新しい配列が返されます。

この性質を利用し、合計したい行の配列をすべて足し合わせます。

数式と解説

C23セルに、以下の数式を入力します。

=C5:I5+C9:I9+C13:I13+C17:I17+C21:I21

Excel画像

確かに、たった一つの数式で全列の合計が計算できました。

しかし、これはアプローチ1と同じ問題を抱えています。

もし合計対象の行が100行あったら、100個の配列を「+」で繋げていくことになり、現実的ではありません。

では、この作業を自動化できないでしょうか?

アプローチ9:MMULT(究極の数式パズル)

考えかた

再び登場、行列計算の鬼、MMULT関数です。

どうにかして数式1つでできないか!?」という探求の末に編み出された、実用性度外視の関数パズルです。

ロジックは非常に難解ですが、「B列が”合計”である行の配列」と「数値データ全体の配列」を、行列計算の力で一気に集計します。

数式と解説

C23セルに、以下の数式を入力します。

=TRANSPOSE(MMULT(TRANSPOSE(IF(ISBLANK(C3:I21),0,C3:I21)),N(B3:B21=”合計”)))

Excel画像

この数式は、複数の配列操作と行列計算を組み合わせた、まさに芸術品です。

N(B3:B21="合計")

B列が「合計」なら1、それ以外なら0となる、19行1列の縦長の行列を生成します。

Excel画像

TRANSPOSE(IF(ISBLANK(C3:I21),0,C3:I21))

まず、データ範囲C3:I21の空白セルを0に変換し、TRANSPOSEで行と列を入れ替えます。

これにより、7列19行の行列ができます。

Excel画像

MMULT(...)

(7×19)行列と(19×1)行列を掛け合わせ、結果として(7×1)の行列、つまり7行1列の縦長の合計結果配列を生成します。

Excel画像

TRANSPOSE(...)

最後に、縦長の結果をTRANSPOSEで横長の配列に変換し、セルにスピルさせます。

Excel画像

ここまでくると、もはや実用というより趣味の世界ですが、Excelの計算能力の限界に触れることができる面白い数式です。

まとめ

今回は、「○行おきの合計」という実務でよくある課題を、9つもの異なるアプローチで解決してみました。

結論として、実務で最も推奨されるのは、アプローチ6のSUMIF関数です。

数式がシンプルで誰にでも理解しやすく、将来的な表の変更にも強い、最も堅牢な方法と言えるでしょう。

最新のExcelが使える環境であれば、アプローチ7のSUM(FILTER(...))も非常に分かりやすく、おすすめです。

一方で、MOD関数やSEQUENCE関数を使った方法は、B列のような手がかりがない場合でも、行の規則性だけで計算できる強力な武器になります。

そして、MMULTのような数式は、直接使うことはなくても、そのロジックを理解しようとすることで、Excelの配列計算に対する理解が飛躍的に深まります。

状況に応じて最適な数式を選択できる「引き出しの多さ」こそが、Excel上級者への第一歩です。

今回の挑戦が、皆さんの日々の集計作業を少しでも楽にするヒントになれば幸いです。

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