過去に「Excel 九九表を作る」記事の中で、少しだけ触れた「配列数式」について改めてご紹介します。
「配列」とは、複数のセルの集まりです。
「配列数式」は、「配列」(複数のセル)に対して1つの数式を作成する式です。
この説明だけではピンと来ないので、例を示しながらご紹介します。
下図のような表データがあり、これらの商品の単価×数量の合計を求めてみます。
よくやる方法としては、D列にそれぞれの商品の単価×数量を個々に求めておき、それらの合計を求める、というものですね。
これを「配列数式」では次のように求めます。
全体の合計を求める B9セルを選択し、「=SUM(B2:B7*C2:C7)」と入力、続けて [Ctrl]+[Shift]+[Enter]キーを押します。
すると、数式バーには先ほどの数式全体が「{ }」で囲まれ「{=SUM(B2:B7*C2:C7)}」となり、B9セルには「3200」と表示されています。(下図)
直接に「{ }」を入力することはできません。
数式を編集したときも、改めて [Ctrl]+[Shift]+[Enter]キーを押します。
これは簡単な例で、このような積和演算でしたら「SUMPRODUCT」関数が使えます。
B9セルに「=SUMPRODUCT(B2:B7,C2:C7)」と入力すれば求まります。(下図)
さて、ここで混乱させるようで申し訳ないのですが、私は Microsoft 365を使っているせいか、「=SUM(B2:B7*C2:C7)」と入力し [Enter]キーだけでこの積和演算が求まります。
どうやら Microsoft 365では [Enter]キーだけで配列数式の演算をするようになり、それ以外のエディションでは [Ctrl]+[Shift]+[Enter]キーで配列数式の演算をするようになっています。
もうひとつ例示します。
同じ表データですが、B9セルに「=SUM(IF(B2:B7>150,C2:C7,0))」と入力、続けて [Ctrl]+[Shift]+[Enter]キーを押します。
B9セルには「7」と表示されています。(下図)
つまり、単価が 150より大きい商品の数量の合計を求めています。
これも Microsoft 365では [Ctrl]+[Shift]+[Enter]キーでなく、[Enter]キーでも同じ結果が得られます。
さて、上記の例は配列を対象として複数の計算を実行する配列数式でした。
もうひとつ、複数の結果を算出する配列数式があります。
同じ表データを使ってみます。
D2~D7セル範囲を選択し、「=B2:B7*C2:C7」と入力し、[Ctrl]+[Shift]+[Enter]キーを押します。
すると、D列にはそれぞれの商品ごとの単価×数量が求まりました。(下図)
このように複数の結果(配列)を一度に算出することができます。
これは上述の「九九表」の場合も同様です。
ここでも Microsoft 365では D2セルに「=B2:B7*C2:C7」と入力し [Enter]キーを押すだけでそれぞれの単価×数量が求まります。
ただし、D2~D7セル範囲が青い枠線で囲まれます。
実は、これが次回の話題「スピル(動的配列)」になります。
「配列」は、理工系の方なら「積和演算」「行列演算」という言い方のほうが馴染みがあるかもしれません。
大きなセル範囲に対するこのような演算をする場合、途中の演算結果を別のセルに格納し、それらに対し最終的な演算を行っても求めることができますが、内部的には演算時間が掛かるようになります。
配列数式はその演算スピードの点でも有利に働きますので、覚えておきましょう。
配列数式については Micosoft サポートページ「配列数式を作成する」などもご参照ください。