Excel 合計以外にSUM関数でできること10選

Excel 合計以外にSUM関数でできること10選 Excel

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

はじめに:SUM関数の本当の実力、知っていますか?

Excelの関数と聞いて、誰もが真っ先に思い浮かべるであろうSUM関数。

その役割は、もちろん「合計」を計算することです。

これはExcelを使い始めたその日から、誰もがお世話になる基本中の基本の機能ですよね。

「でも、もし…Excelの世界で使える関数が、このSUM関数だけ』だったとしたら?」

合計以外の作業、例えば「人数のカウント」や「条件に合うものだけ集計」、「平均や順位の計算」などを、すべてSUM関数だけで挑戦してみる…。

今回の記事は、そんな少し変わった「SUM関数縛り」の思考のパズルです。

この挑戦を通して、普段何気なく使っているSUM関数の、知られざる驚異的なポテンシャルに光を当てていきます。

さあ、Excelの常識を覆す、SUM関数の奥深い世界へようこそ!

【今回のルールとご注意】
今回の趣旨は、厳密さよりも「SUM関数だけでこんなことができるんだ!」という発見を楽しんでいただくことです。
そのため、データに空白エラー値文字列などが含まれていると意図しない結果になる場合があります。今回は、きれいなデータが揃っている、という前提で進行しますので、ご了承ください。

準備:名前を付けて、数式を分かりやすく!

現在の状態: A列に名前、B列に性別、C列に点数が記録された成績表があります。

Excelの説明画像

今回の数式を分かりやすくするために、まずセル範囲に「名前の定義」をします。

これは、例えば「C2:C9」という無機質なセル番地の代わりに、「点数」という人間が理解しやすい名前を付けて、数式内で使えるようにする、実務でも非常に有効なテクニックです。

Web版Excelでは、リボンの「数式」タブ → 「ネームマネージャー」 → 「+ 新規」から設定できます。

Excelの説明画像
Excelの説明画像

以下の3つの名前を定義しておきましょう。

  • A2:A9の範囲に「名前
  • B2:B9の範囲に「性別
  • C2:C9の範囲に「点数

これで準備は完了です。

Excelの説明画像

SUM関数でできる10のこと

1. 点数を合計する(基本の”き”)

まずは肩慣らし。SUM関数の本来の役割である、数値の合計です。

=SUM(点数)

これは、名前を定義した「点数」の範囲(C2:C9)をすべて合計する、という最も基本的な使い方ですね。

結果は「571」になります。

Excelの説明画像

2. 70点以上の生徒の数をカウントする

ここからが本番です。合計ではなく「人数」を数えます。

=SUM((点数>=70)*1)

この数式の核心は (点数>=70) の部分です。

これは、「点数」範囲の各セルが70以上かどうかを判定し、{FALSE;TRUE;TRUE;...} のような論理値(TRUE/FALSE)の配列を返します。

Excelの説明画像

Excelでは、この論理値に四則演算を行うと、TRUEは「1」FALSEは「0」に変換されます。

つまり、*1 をすることで、論理値の配列が {0;1;1;...} という数値の配列に変わるのです。

Excelの説明画像

最後に、この1と0の配列をSUM関数で合計すれば、見事に70点以上の人の人数(=1の個数)がカウントできる、というわけです。

Excelの説明画像

【実務では…】
このケースでは、素直にCOUNTIF関数を使うのが最もシンプルで分かりやすいです。
=COUNTIF(点数, ">=70")

3. 全体の人数をカウントする

応用編です。今度は、空白ではないセルの数を数えて、全体の人数をカウントします。

=SUM((名前<>””)*1)

(名前<>"") の部分が、「名前」範囲の各セルが空白(””)ではないかを判定します。

空白でなければTRUE(1)、空白ならFALSE(0)となるので、これを合計すれば全体の人数が求められます。

Excelの説明画像

【実務では…】
空白ではないセルの個数を数える専門の関数、COUNTA関数を使いましょう。
=COUNTA(名前)

4. 女性の生徒の点数を合計する

SUM関数は、条件付きの「合計」もこなせます。

=SUM((性別=”女性”)*点数)

(性別="女性") の部分が、性別が「女性」の行だけがTRUE(1)になる配列を生成します。

この1と0の配列に、「点数」の配列を掛け合わせます。

すると、性別が「男性」の行は 0 * 点数 = 0 となり、性別が「女性」の行だけが 1 * 点数 = 点数 として残ります。

この結果の配列をSUMで合計すれば、女性だけの点数合計が計算できるのです。

Excelの説明画像

【実務では…】
まさにこのためにある、SUMIF関数を使いましょう。最も基本的で重要な関数の一つです。
=SUMIF(性別, "女性", 点数)

5. 平均点を出す

合計と個数が分かれば、もちろん平均も計算できます。

=SUM(点数)/SUM((名前<>””)*1)

これは、これまで紹介したテクニックの組み合わせですね。

数学の基本である「平均 = 合計 ÷ 個数」を、SUM関数だけで表現しています。

SUM(点数)で合計点を出し、それをSUM((名前<>"")*1)で計算した人数で割っています。

Excelの説明画像

【実務では…】
もちろん、平均を求める専門のAVERAGE関数があります。
=AVERAGE(点数)

6. 累計を出す

SUM関数は、日々の売上などを積み上げていく「累計」の計算も得意です。

=SUM($C$2:C2)

この数式を任意のセル(例えばD2セル)に入力し、下にフィルコピーします。

このテクニックの鍵は、絶対参照相対参照を組み合わせた「複合参照」$C$2:C2にあります。

開始地点の$C$2は固定し、終了地点のC2は固定しないことで、下にコピーするたびに合計範囲が自動的に拡大していきます。

Excelの説明画像

【より詳しく】
累計の計算方法については、過去の記事で詳しく解説していますので、ぜひご覧ください。

7. 順位(降順)を付ける

信じられないかもしれませんが、SUM関数は「順位」すら計算できます。

=SUM((点数>=C2)*1)

この数式をD2セルに入力し、下にフィルコピーします。

(点数>=C2) の部分が、C2セルの点数(55点)に対して、「点数」範囲の各点数がそれ以上であるかを判定します。

Excelの説明画像

自分自身を含め、自分以上の点数の人が何人いるかを数えることで、それがそのまま降順の順位になる、というロジックです。

Excelの説明画像

なお、昇順にしたい場合は、不等号を <= に変えるだけです。

【ご注意】
この方法は、同じ点数の人がいると、RANK関数とは異なる挙動になります(例:同率2位が2人いる場合、次は4位になる)。
重複がないデータでのみ有効なテクニックです。

【実務では…】
順位付けには、専門のRANK関数やRANK.EQ関数を使いましょう。
=RANK(C2,点数)

さて、この後この順位データを使いたいので、D2:D9の範囲に「順位」と名前を付けておきましょう。

8. 点数を降順に並び替える

順位が分かれば、並べ替え(ソート)も可能です。

まず下準備として、作業列(ここではF2:F9)に1から8までの連番を手入力します。

Excelの説明画像

次に、G2セルに以下の数式を入力し、下にフィルコピーします。

=SUM((順位=F2)*点数)

(順位=F2) の部分が、「順位」範囲の中で、F2セルの値(つまり「1」)と等しい場所を探し、その行だけがTRUE(1)になる配列を生成します。

これに「点数」配列を掛けることで、1位の人の点数だけが残り、それをSUMで合計(というより抽出)しています。

Excelの説明画像

これを下にコピーしていくことで、1位、2位、3位…と、点数が降順に並び替えられるのです。

Excelの説明画像

【実務では…】
最新のExcelなら、SORT関数一発です。スピル機能で自動的に展開されます。
=SORT(点数,1,-1)

Excelの説明画像

9. 重複をカウントする

ここからは、データの重複を調べていきます。

そのために、まず「点数」のデータを少し変更し、76点が2つ存在するようにします。

Excelの説明画像

この状態で、D2セルに以下の数式を入力し、下にフィルコピーします。

=SUM((点数=C2)*1)

これは、C2セルの値(55点)が、「点数」範囲の中にいくつあるかを数えています。

これを各行で行うことで、それぞれの点数が何回出現したか(重複しているか)を調べることができます。

結果を見ると、76点の行だけが「2」となり、重複していることが一目で分かりますね。

Excelの説明画像

10. 重複しないユニークな値の総数を数える

最後の挑戦です。

9で作成した重複カウントの列(ここではD2:D9にあるとします)を使って、重複を除いた値が全部で何種類あるかを数えます。

=SUM(1/D22:D29)

この数式は、少し数学的なトリックを使っています。

1/D22:D29 の部分が、重複カウントの配列 {1;1;1;1;1;2;2;1} の各要素を逆数にします。

結果は {1;1;1;1;1;0.5;0.5;1} となります。

Excelの説明画像

これをSUMで合計するとどうなるでしょう?

重複していなかった値は「1」のままですが、2回重複していた値は「0.5」が2つになり、合計すると「1」になります。

つまり、どの値も種類としては「1」としてカウントされ、その合計がユニークな値の総数になる、という巧妙なロジックです。

結果は「7」となり、ユニークな点数が7種類あることが分かります。

Excelの説明画像

【実務では…】
最新のExcelなら、UNIQUE関数で重複しないリストを作ってから、COUNT関数で数えるのが簡単です。
=COUNT(UNIQUE(点数))

まとめ

今回は、「SUM関数縛り」というテーマで、合計以外にもカウント、条件集計、平均、累計、順位付け、並べ替え、重複チェックまで、実に10種類もの処理に挑戦しました。

他にも最大値、最小値なども求められます。

また、条件次第ではVLOOKUP関数のような挙動も再現できます。

もちろん、これらのSUM関数を使った方法は実務では全く推奨されません(笑)。

それぞれの作業には、もっと適した専門の関数が存在します。

しかし、SUM関数というたった一つの基本的な関数が、配列や論理値の考え方と組み合わせることで、これほどまでに多くのことができる、という事実は、非常に面白い発見だったのではないでしょうか。

なぜこのような動きをするのかを理解することは、Excelの配列計算の仕組みを深く知るための、最高のトレーニングになります。

今回の「暇つぶし」が、皆さんのExcel関数への見方を少しでも変えるきっかけになれば幸いです。

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