Excelで、「一つ飛ばし」で数値を合計したい…。
例えば、「1行おき」や「1列おき」の集計はもちろん、「飛び飛びのセル」や「一定間隔の数値」だけを効率よく足し算したい、という場面はありませんか?
この記事では、そんな少し特殊な合計・集計作業を劇的に効率化する SUMPRODUCT 関数 を使った方法を、具体的な数式を交えて分かりやすく解説します。
この方法は、新しい FILTER 関数が使えない、あるいは不慣れな方でもすぐに実践できるのが大きなメリットです。Excel 2019以前のバージョンをお使いの方でも安心して活用いただけます。
基本的な使い方から、「2つ飛ばし」のような応用例、注意点までを網羅していますので、ぜひこのテクニックをマスターして、日々の業務をスピードアップさせましょう。
なぜSUMPRODUCT関数を使うのか?
普通のSUM関数では対応できない理由
通常のSUM関数では、連続した範囲の合計は簡単にできますが、1行おき・1列おき・一つ飛ばしなど「間引き」をした合計は直接的に対応していません。
参照先のセルが少ない場合は、=SUM(A1,A3,A5,...) のように1つずつ指定して記述することも可能ですが、参照先が多くなると手間がかかり、修正も大変になります。
そのため、条件付きでデータを選択して合計するためには、より柔軟な関数が必要になります。
SUMIF関数では難しい理由
SUMIF や SUMIFS 関数も条件付き合計の代表的な関数ですが、「A列が”文房具”だったらB列を合計する」といったように、特定のセルの “値” を条件にするのは得意です。
しかし、「1行おき」や「奇数行のみ」といった、セルの物理的な “位置” を条件にして合計範囲を指定することはできません。
SUMPRODUCT関数の基本的な仕組みとメリット
SUMPRODUCT関数は、配列演算ができる関数です。
構文:
=SUMPRODUCT(配列1, 配列2, ...)
配列ごとの掛け算結果を合計するため、条件付きの計算にも応用が効きます。
例えば、「奇数行か?」を判定する数式と組み合わせると、Excelの内部で{TRUE;FALSE;TRUE…}のような判定結果のリスト(配列)が作られます。これと合計したい数値を掛け合わせることで、実質的に奇数行のデータだけを抜き出して計算しているのです。
FILTER関数との違いと使い分け
FILTER関数でも同様のことができますが、Excel 2019以前にはFILTER関数が搭載されていません。
また、FILTER関数が使える場合でも、SUMPRODUCTは「古いExcel」や「業務用の互換性が求められるファイル」で広く利用されています。
FILTER関数が使える場合は、「【Excel・スプレッドシート対応】FILTER関数で1行おき・1列おき・一つ飛ばしの合計を出す方法」に、最新の方法をまとめています。Excel 2021/Microsoft 365 や Googleスプレッドシート対応版はこちらをご参照ください。
【具体例】1行おき・1列おき・一つ飛ばしの合計を出す方法
1列おき(偶数列/奇数列)の合計例
例(偶数列):
=SUMPRODUCT((MOD(COLUMN(A1:J1),2)=0)*A1:J1)

例(奇数列):
=SUMPRODUCT((MOD(COLUMN(A1:J1),2)=1)*A1:J1)

1行おき(偶数行/奇数行)の合計例
例(偶数行):
=SUMPRODUCT((MOD(ROW(A1:A10),2)=0)*A1:A10)

例(奇数行):
=SUMPRODUCT((MOD(ROW(A1:A10),2)=1)*A1:A10)

一つ飛ばしの合計例(行でも列でも応用可能)
※ この例は、範囲内に文字列が含まれていない場合にのみ使用してください。
文字列が含まれている場合は #VALUE! エラーになります。
文字列混在の可能性がある場合は、FILTER関数+SUM関数を使う方が安全です。
例(1列おき、一つ飛ばし):
=SUMPRODUCT((MOD(COLUMN(A1:J1)-COLUMN(A1),2)=0)*A1:J1)

例(1行おき、一つ飛ばし):
=SUMPRODUCT((MOD(ROW(A1:A10)-ROW(A1),2)=0)*A1:A10)

※ 一つ飛ばしの方法は、範囲内の先頭セルを基準に「1つ飛ばし(1行おき/1列おき)」に合計したい場合に使います。
たとえば「1行目が見出し、2行目からデータが1行おきに入っている」などのケースで便利です。
偶数行/偶数列との違いは、偶数は「シート全体の行番号・列番号」が基準ですが、一つ飛ばしは「指定した範囲の中の相対位置」が基準になります。
【応用例】2行/2列飛ばし・特定の条件で合計する方法
2行/2列飛ばしの場合
これまで解説してきたのは「1つ飛ばし」の例ですが、この数式の応用で「2つ飛ばし」や「3つ飛ばし」の合計も簡単に計算できます。
ポイントは MOD 関数の2番目の数値(除数)です。
この数値を変更することで、飛ばす間隔を自由にコントロールできます。
- 1つ飛ばし (2つごと):
MOD(..., 2) - 2つ飛ばし (3つごと):
MOD(..., 3) - 3つ飛ばし (4つごと):
MOD(..., 4)
例(2行飛ばし(3行ごと)):
=SUMPRODUCT((MOD(ROW(A1:A10),3)=0)*A1:A10)

特定の条件で合計する場合(他関数との組み合わせ例)
例:100以上のデータのみ 1行おきに合計
=SUMPRODUCT((MOD(ROW(A1:A10),2)=0)*(A1:A10>=100)*A1:A10)

注意点とよくあるミス
範囲指定ミスに注意
- 絶対参照/相対参照を間違えると意図しない結果になる場合があります。
範囲内に文字列がある場合の注意
SUMPRODUCT関数は、計算時に掛け算を行うため、範囲内に文字列が含まれていると#VALUE!エラーになります。- そのため、範囲には数値のみが含まれていることを確認する必要があります。
- 文字列が混在する可能性がある場合は、FILTER関数+SUM関数を使う方が安全です。
MOD関数の設定ミスに注意
MOD関数の「基準位置」を意識しないと「ずれた位置」が選ばれてしまいます。- 一つ飛ばしの場合は
MOD(ROW()-ROW(開始セル),2)の形を使うのが安全です。
よくある質問(FAQ)
- QFILTER関数が使える場合はどちらを使えば良い?
- A
FILTER関数が使える場合は、FILTER関数+SUM関数の組み合わせの方がシンプルに記述できます。FILTER関数に慣れていない場合はSUMPRODUCT関数でも十分対応可能です。
- QSUMPRODUCT関数はExcelのどのバージョンで使える?
- A
Excel 2007以降で利用可能です(非常に古くから搭載されている関数です)。
- QSUMPRODUCT関数とFILTER関数の違いは?
- A
FILTER関数は条件に合致したデータを「抽出」する関数で、
SUM関数と組み合わせて合計します。SUMPRODUCT関数は「条件に合致したものだけを掛け合わせて合計」する関数なので、一つの式で完結しやすいという違いがあります。
- QSUMPRODUCT関数の応用例にはどんなものがある?
- A
複数条件の合計や平均、重み付き平均、行列の演算、複雑な条件付き集計など、非常に柔軟な使い方が可能です。
まとめ
今回は、SUMPRODUCT関数を使って、「一つ飛ばし」や「1行おき」はもちろん、「飛び飛びのセル」や「一定間隔」の数値を合計する、非常に便利なテクニックを解説しました。
この手法の最大の強みは、SUMIF関数などが苦手とする「セルの物理的な位置(奇数行など)」を条件に指定できる点にあります。
さらに、MOD関数の数値を変更するだけで、「2つ飛ばし」「3つ飛ばし」といった、より応用的な集計も自由自在です。
ただし、合計したい範囲に文字列が含まれていると #VALUE! エラーが出てしまう点だけはご注意ください。
Excel 2019以前のバージョンでも使える汎用性の高いテクニックですが、もしExcel 2021以降のバージョンをお使いの場合は、FILTER関数を使うと、よりシンプルに数式を書けるケースもあります。
ぜひ、ご自身の環境に合わせてご活用ください。




