Excel関数4つだけで挑む!無駄な集計パズル

Excel関数4つだけで挑む!無駄な集計パズル Excel

はじめに:その集計、実務で使いますか? いいえ、使いません!

「Excelで条件付き合計なら、SUMIFS関数でしょ?」

そう思ったあなた、大正解!

ほとんどの場合、SUMIFSSUMPRODUCT関数が、最も簡単で分かりやすい方法です。

でも、ちょっと待ってください!
もし、その強力な武器が、今日からすべて使用禁止になったとしたら?

「え、SUMIFSSUMPRODUCTもなしで、どうやって条件付き合計を…?」

そんな、実務では絶対に使わないけれど、関数好きの心をくすぐる「無駄な集計」に、皆さんと一緒に挑戦してみたいと思います!

そして、この冒険の裏には、とても大切なテーマが隠されています。それが「配列」です。

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

そもそも「配列」ってなんだろう?

配列」と聞くと、なんだか難しそうに聞こえますか?

大丈夫です!配列とは、ものすごく簡単に言うと、「複数のセルの集まりを、まるごと一つの塊として扱う」考え方のことです。

例えば、A1+5,A2+5,A3+5 のようにセルを一つひとつ5を足していくのではなく、「A1からA3までの」に対して、「5を足して!」と一気に命令できるのが配列の力です。

Excelの説明画像

この「配列」を使いこなせると、どんないいことがあるのでしょうか?

例えば、「100人の成績リストの中から、80点以上の人だけを合計したい」と思ったとします。

配列を知らないと、IF関数を100個書く…なんて途方もないことになりかねません。

しかし、配列を使えば、たった一つの数式で、「100人分の点数の塊の中から、80点以上という条件に合うものだけを選び出して、合計する」という処理が一瞬でできてしまうのです!

今回の冒険は、この「配列」という考え方をマスターするための、最高のトレーニングになりますよ!

さあ、私たちが今回使用を許された、たった4種類の関数だけで、この配列の世界を冒険しましょう!

今回の使用可能関数:SUM, MOD, ROW, COLUMN

この基本中の基本と言える4つの関数だけで、奇妙で複雑な範囲の合計を計算していきます。

目的は、

「=SUM( (条件式) * (集計したい範囲) )」という、Excel配列計算の黄金律を、魂に刻み込むこと!

この考え方さえマスターすれば、あなたのExcel脳が、新たなステージへと覚醒するかもしれませんよ!

配列を扱ったSUM関数の使用例などは、以下の記事でも紹介しています!

ステップ1:冒険の準備 – 盤面と武器を整える

何事も、まずは準備から。今回の冒険の舞台となる、ランダムな数字が並んだ9×9の盤面を用意しましょう。

1-1. RANDARRAY関数で、ランダムな盤面を作る

どこか空いているセルに、以下の数式を入力してみてください。

=RANDARRAY(9,9,1,100,TRUE)

RANDARRAY関数が、9行9列の範囲に、1から100までのランダムな整数を一瞬で生成してくれます。

Excelの説明画像

【RANDARRAY関数の引数】
=RANDARRAY(行数, 列数, 最小値, 最大値, 整数)
・行数, 列数: 生成したい配列のサイズを指定します。(例: 9, 9)
・最小値, 最大値: 乱数の範囲を指定します。(例: 1, 100)
・整数: TRUEを指定すると整数(例: 58)、FALSEを指定すると小数(例: 34.59…)が返されます。今回は整数が欲しいのでTRUEですね!

このままだとファイルを開くたびに数値が変わってしまうので、数値を固定しておきましょう。

まず、生成された9×9の範囲のどこか一つのセルを選択し、キーボードの「Ctrl + A」を押してください。隣接するデータ範囲がすべて一瞬で選択されます。便利ですよね!

Excelの説明画像

次に、その範囲をコピー(Ctrl + C)し、すぐに「Ctrl + Shift + V」を押してください。

これは「値として貼り付け」のショートカットキーで、数式の結果だけをその場に貼り付けてくれます。これで数値が固定され、戦場が整いました!

Excelの説明画像

1-2. 「名前の定義」で、戦場に名前をつける

A1:I9の範囲に「範囲」という名前をつけましょう。

こうすることで、数式が格段に読みやすくなります。

Web版Excelでは、上部のリボンから「数式」タブ → 「ネームマネージャー」を選択し、「+ 新規」から名前を定義できます。

Excelの説明画像

【SUM vs SUMPRODUCT】
今回のような配列計算は、古いExcel(2019以前)ではSUMPRODUCT関数を使うのが一般的でした。SUM関数で同じことをするには、数式を入力した後に「Ctrl + Shift + Enter」で確定(CSE確定)する必要があったからです。
しかし、現代のExcel(2021以降, Microsoft 365, Web版)では、スピル機能の登場により、SUM関数だけで何の問題もなく配列計算ができます。時代は進化したのです!


いざ挑戦!4つの関数で挑む、無駄な集計6番勝負!

1. 格子状に合計(市松模様)

考えかた

まずは肩慣らしです。
チェス盤のような市松模様(格子状)に数値を合計してみましょう。

この模様は、セルの「行番号」と「列番号」の偶数・奇数の組み合わせでできていますよね?
「行番号+列番号」が偶数になる場所と、奇数になる場所でグループ分けができそうです。

数式と解説

【行番号+列番号が偶数のマスだけ合計】

=SUM((MOD(ROW(範囲)+COLUMN(範囲),2)=0)*範囲)

Excelの説明画像

行番号+列番号が奇数のマスだけ合計】

=SUM((MOD(ROW(範囲)+COLUMN(範囲),2)=1)*範囲)

Excelの説明画像

この数式の心臓部は、(MOD(ROW(範囲)+COLUMN(範囲),2)=0) の部分です。

ROW(範囲)COLUMN(範囲): それぞれ、9×9の範囲に対応する行番号と列番号の配列を生成します。

Excelの説明画像

ROW(範囲)+COLUMN(範囲): この2つの配列を足し算し、「行番号+列番号」の計算結果が詰まった9×9の配列を作ります。

Excelの説明画像

MOD(..., 2)=0: 足し算の結果を2で割った余りが0(つまり偶数)かどうかを判定し、TRUE/FALSEが市松模様に並んだ「条件配列」を生成します。

Excelの説明画像

(条件配列) * 範囲: ここが黄金律!条件配列(TRUE=1, FALSE=0)と、元の数値が入った「範囲」を掛け合わせます。

すると、条件がTRUEの場所の数値はそのまま残り、FALSEの場所の数値は0になります。

Excelの説明画像

SUM(...): 最後に、数値が残った部分だけを合計するというわけです。見事ですよね!

2. 偶数・奇数のみ合計

考えかた

次は、盤面全体の中から、数値そのものが「偶数」または「奇数」のものだけを合計してみましょう。
これも、MOD関数を使えば簡単そうですね!

数式と解説

【偶数のみ合計】

=SUM((MOD(範囲,2)=0)*範囲)

【奇数のみ合計】

=SUM(MOD(範囲,2)*範囲)

Excelの説明画像

(MOD(範囲,2)=0): 範囲に入っている数値を直接2で割り、余りが0(偶数)の場所だけがTRUEになる条件配列を作ります。

Excelの説明画像

MOD(範囲,2): 奇数の合計では、=0 を省略していますね。なぜなら、奇数を2で割った余りは必ず「1」、偶数の余りは「0」になります。

つまり、この時点で奇数の場所が「1」、偶数の場所が「0」になっているので、これをそのまま条件配列として使えるのです!

Excelの説明画像

3. 斜めに合計(対角線)

考えかた

盤面を斜めに横切る、対角線上の数値だけを合計してみましょう。

左上から右下への対角線は、どんな特徴があるでしょうか?
そう、「行番号」と「列番号」が常に同じ(1行1列目, 2行2列目…)ですよね!

数式と解説

【斜め↘の合計】

=SUM((ROW(範囲)=COLUMN(範囲))*範囲)

(ROW(範囲)=COLUMN(範囲)): 行番号の配列と列番号の配列を比較し、両者が等しい対角線上だけがTRUEになる、非常にシンプルな条件配列です。

Excelの説明画像

では、右上から左下へはどうでしょう?少し工夫が必要です。

【斜め↙の合計】

=SUM((ROW(範囲)+COLUMN(範囲)=10)*範囲)

(ROW(範囲)+COLUMN(範囲)=10): 右上から左下への対角線上では、「行番号+列番号」が常に「盤面のサイズ+1」(今回は9+1=10)になる、という性質を利用しています。これも美しいロジックですね!

Excelの説明画像

4. 外周の合計

考えかた

今度は、盤面の外枠、ぐるっと一周の数値を合計してみましょう。

外周とは、言い換えれば「1行目 または 9行目 または 1列目 または 9列目」にあるセルのことですよね。

「ということは、OR関数を使えばいいの?」

良い質問です!しかし、残念ながらORAND関数は、配列計算ではうまく機能してくれません。

ではどうするか?

配列計算の世界では、「+」がOR、「*」がANDの役割を果たすのです!

【参考】引き算で考える方法
ちなみに、=SUM(範囲,-B2:H8) という方法でも外周を計算できます。これは、全体の合計から、一回り小さい内側の合計を「引く」という、数学的な発想ですね。これも面白いですが、今回はあえて条件式で挑戦してみましょう!

Excelの説明画像

数式と解説

=SUM(( (ROW(範囲)=1) + (ROW(範囲)=9) + (COLUMN(範囲)=1) + (COLUMN(範囲)=9) > 0 )*範囲)

(ROW(範囲)=1): 1行目だけがTRUE(1)になる配列を作ります。

Excelの説明画像

(...) + (...) + (...) + (...): 4つの条件(1行目, 9行目, 1列目, 9列目)の配列をすべて足し合わせます。これにより、いずれかの条件に当てはまる(つまり外周上の)セルは、合計が1以上になります。

Excelの説明画像

・(... > 0)*範囲: 足し算の結果が0より大きいかどうかを判定し、最終的な外周だけがTRUEになる条件配列を完成させ、範囲を掛けます。

SUM(...): 最後に、数値が残った部分だけを合計するというわけです。見事ですよね!

Excelの説明画像

5. 三角形の範囲の合計

考えかた

盤面を対角線で真っ二つに分けた、三角形の領域を合計してみましょう。

これも、行番号と列番号の関係性に着目すれば、条件が作れそうですね。

数式と解説

=SUM((ROW(範囲)>=COLUMN(範囲))*範囲)

(ROW(範囲)>=COLUMN(範囲)): 「行番号が列番号以上である」という条件です。

これにより、対角線とその左下の領域がすべてTRUEになる、美しい三角形の条件配列が生まれます。不等号の向きを逆にすれば、反対側の三角形も合計できますよ!

Excelの説明画像

6. 十字の範囲の合計

考えかた

さあ、最後は盤面のど真ん中、5行目と5列目が交差する、十字の範囲を合計してみましょう!
これも、外周の合計で学んだ「+」をORとして使う考え方の応用ですね。

数式と解説

=SUM(( (ROW(範囲)=5) + (COLUMN(範囲)=5) > 0 )*範囲)

(ROW(範囲)=5) + (COLUMN(範囲)=5): 「5行目である」という条件配列と、「5列目である」という条件配列を足し合わせます。

これにより、5行目と5列目だけが1以上(中心の交差点は2)になります。

Excelの説明画像

SUM(... > 0):結果が0より大きい場所、つまり十字の範囲だけがTRUEになる条件配列を完成させ、合計します。もはや言うまでもありませんね!

Excelの説明画像

まとめ:すべての道は「配列計算」に通ず

平坦な冒険になるかと思いきや、SUM, MOD, ROW, COLUMNというたった4つの武器だけで、これほど多様な陣形を攻略できることに、驚かれたのではないでしょうか。

そして、すべての数式が、

=SUM( (条件配列) * (集計範囲) )

という、たった一つの美しい黄金律に基づいていたことにお気づきでしょうか。

この考え方さえマスターすれば、どんなに複雑に見える集計条件も、TRUE/FALSEのパズルとして解き明かすことができます。

実務で直接この数式を書くことはないかもしれません。

しかし、このロジックは、SUMIFSFILTERといった現代の関数の根底にも流れる、Excelの普遍的な真理なのです。

今回の関数パズルが、皆さんの「配列脳」を鍛え、数式を組み立てる楽しさを再発見するきっかけになれば、これほど嬉しいことはありません。

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