【Excel】配列数式の基礎:旧来のCtrl+Shift+Enterと動的配列の違い

【Excel】配列数式の基礎:旧来のCtrl+Shift+Enterと動的配列の違い
🛡️ 超解決

Excelの「配列数式」は、複数のセルの値をひとまとまりとして計算する数式です。古いブックで見かける波かっこ付きの数式と、現在のExcelで結果が隣のセルへ広がる数式は、入力・修正の方法が違います。ここではWindows版を中心に、同じ売上明細を使って旧来の配列数式と動的配列を比較します。

ADVERTISEMENT

配列数式は、複数の値をまとめて扱う

数量がA2:A4、単価がB2:B4にある表を考えます。数量は2、3、5、単価は120、80、60とします。行ごとの金額は240、240、300です。通常はC2に「=A2*B2」を入れて下へコピーしますが、配列として扱うと「A2:A4*B2:B4」という一つの式で、同じ位置にある値同士を掛け算できます。

配列数式だから必ず複数セルに答えが出るわけではありません。3行分の金額を表示する式もあれば、その3件を合計して780という一つの値を返す式もあります。「入力が複数か」と「出力が何個か」を分けて考えると、必要な結果範囲が分かります。

配列化だけで処理が速くなるとは限りません。大量の行や列全体を何度も計算すると負荷が増えます。まずは対象が明確な小さな範囲で式を確かめ、既存の行別計算を置き換える価値がある場合に使います。

※ お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

旧来の配列数式は、結果範囲を先に選ぶ

Excel 2016・2019など、動的配列に対応していない版で3件の金額を出す場合は、空のC2:C4を先に選びます。式を入力した後、CtrlとShiftを押しながらEnterで確定します。この方法はキーの頭文字からCSEとも呼ばれます。

=A2:A4*B2:B4

確定すると数式バーには波かっこで囲まれた形が表示されます。波かっこはExcelが付ける印であり、自分で「{」と「}」を入力しても配列数式にはなりません。結果範囲を1セルしか選ばなければ、3件すべてを表示する場所が確保されません。

この例ではC2:C4が一組です。後からC3だけの式を修正したり消したりしようとすると、配列の一部を変更できない旨のメッセージが出ます。変更が必要なら配列全体を選んで編集し、再びCtrl+Shift+Enterで確定します。練習は元ブックのコピーで行い、既存の計算結果を控えておきましょう。

動的配列は、先頭セルに入力してEnterで確定する

Microsoft 365、Excel 2021・2024などの対応版では、空のC2だけを選んで同じ式を入力し、Enterで確定します。3件の結果がC2:C4へ展開されます。このように数式の結果が周囲のセルに広がる動作を「スピル」と呼びます。

数量2・3・5と単価120・80・60から金額240・240・300を求める例。旧CSEはC2:C4を先に選択、動的配列はC2だけに入力して結果がC4まで広がる。
計算するデータと答えは同じでも、最初に選ぶ範囲と確定キーが異なります。

数式を管理するのは先頭のC2です。C3やC4には結果が表示されますが、それぞれに独立した式を入力した状態ではありません。内容を修正するときもC2を編集します。結果の一部だけを手入力の金額に差し替える用途には向かないため、明細ごとの例外処理が必要なら元データや式の条件を見直します。

「動的」は、指定済みの範囲の外まで自動的に読み取るという意味ではありません。この式の参照はA2:A4とB2:B4なので、5行目に明細を追加しただけでは計算対象になりません。参照範囲を変更するか、追加行に追従するテーブル参照を設計します。結果が広がる場所と、入力を読み取る範囲は別です。

合計だけなら、結果を一つにまとめる方法もある

行別の金額が不要で合計だけを求めたいときは、配列の積をSUMで合計できます。対応版では次の式を空のセルへ入力してEnterで確定すると、240+240+300で780になります。旧来の配列計算として入力する場合はCtrl+Shift+Enterが必要です。

=SUM(A2:A4*B2:B4)

この「対応する行の積を合計する」という用途には、SUMPRODUCTも使えます。次の式は旧版でも通常のEnterで確定できます。複雑な配列数式を導入する前に、目的に合う既存の関数がないか確認すると保守しやすくなります。

=SUMPRODUCT(A2:A4,B2:B4)

二つの範囲は同じ大きさ、同じ明細順にそろえます。数量だけを並べ替えて単価を元の順に残すと、計算できても別の商品を掛け合わせた金額になります。結果が780になることだけでなく、2×120、3×80、5×60という組み合わせも確認してください。

なお、カンマで二つの範囲を渡すSUMPRODUCTは、範囲内の数値以外の項目を0として扱います。数量欄に「未確認」などの文字があれば、エラーが出ず合計が少なくなる場合があります。文字混在を除外してよいかも、元の明細と照合します。

スピルしないときは、出力先から確認する

動的配列で「#SPILL!」が出たら、まず結果が入るはずのセルを調べます。C3にメモや空白に見える文字が入っていると、C2からの結果を置けません。邪魔なセルが不要と確認できた場合だけ、別の場所へ移すか内容を消します。シート全体を消去して解決しようとしないでください。

結合セルもスピルの妨げになります。帳票として結合を残す必要があるなら、結合のない別の範囲で計算する方が適切です。また、スピルする配列数式はExcelテーブルの内部では使えません。入力データをテーブルにし、出力の式をテーブル外に置く構成を検討します。

「#NAME?」なら、使っている関数名とExcelの対応版を確認します。「#VALUE!」なら、数値であるべきセルに文字やエラーがないか、二つの配列の形が合っているかを調べます。エラー名が違えば確認する場所も違うため、すべてをスピル範囲の問題として扱わないことが大切です。

既存のCSE数式を直すときと、元へ戻すとき

現在のExcelでも、互換性のために旧来のCSE数式は扱えます。古いブックを開いたからといって、すべてEnterで再確定する必要はありません。置き換える場合は元ファイルを残し、対象範囲、元の数式、結果件数、合計値を記録してから進めます。

旧配列を動的配列へ置き換える際は、旧配列全体を選んで内容を削除し、先頭セルへ新しい式を入れます。一部だけを消す方法ではありません。周囲に置いていた説明や合計行へ新しい結果が広がらないかも確認します。操作直後の誤りならCtrl+Z、変更が重なった場合は保存しておいたコピーで比較します。

動的配列の式を消すときは先頭セルを対象にします。結果を固定値として残したい場合は、必要範囲をコピーし、別の空き範囲へ値として貼り付けて照合します。その後は元データの変更に追従しないため、計算式の代替ではなく確定時点の控えとして扱います。

共有先の版と、実データでの結果を確かめる

旧版で開いた場合の動作は、配列の種類だけでなく、式で使う関数や参照方法にも左右されます。「動的配列なら必ず#NAME?になる」「保存できれば同じように編集できる」と一括りにはできません。共同作業では相手のExcelの版を確認し、実際に渡すファイルで結果と再計算を確かめます。

業務用の置換では、空欄、文字混在、追加行、エラーのある行も含めたコピーで確認してください。行別の結果が必要か、合計一つでよいかを決めてから方式を選ぶと、必要以上に複雑な式を避けられます。

仕様の確認先:Microsoft:動的配列と従来のCSE配列数式、スピルの動作と制約。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。
この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】