Microsoft365版 Excelに実装された「スピル」という機能についてご紹介します。
現在では、他に Web版 Excel、モバイル版 Excel、Excel 2021でも利用できます。

普通の数式や関数は、入力したセルに 1つの結果を出力しますが、「スピル」は、1以上の値(配列)が入力セルに隣接するセルにまで結果を出力します。
英語「spill」は「(容器から)こぼれる」「溢れる」という意味で、複数の結果が入力セルから溢れ出て隣接セルにまで出力することを指しています。

先の「Excel 配列数式」でご紹介した配列数式は、1以上の結果(配列)を返すセルを選択しておき、[Ctrl]+[Shift]+[Enter]キーで数式を一括入力し「{=数式}」というように「{ }」で囲まれた数式(配列数式)となります。
従来の Excelではこのようにして配列数式の入力および演算を行いますが、Microsoft365版などでは、数式に対して単に [Enter]キーを押すだけで配列数式のような動作となります。

「のような」と表現したのは、Microsoft365版などでは「動的配列数式」とも呼ばれ、これが「スピル」なのです。
「動的」である所以は、結果を返す数式によっては結果の数が変わり得ますが、スピルする範囲が適応的に変化することに対応しています。
従来の配列数式では、予め結果が入る固定サイズのセル範囲を選択して数式を入力し演算させる形になります。

このスピル機能により追加された関数には、「FILTER」「SORT」「SORTBY」「UNIQUE」「RANDARRAY」「SEQUENCE」「XLOOKUP」「XMATCH」があります。
「FILTER」関数は、先の「Excel FILTER関数」でご紹介しました。
「XLOOKUP」関数は、「Excel XLOOKUP関数(1)」、「Excel XLOOKUP関数(2)」でご紹介しましたが、スピルについては触れないでいました。

上記の関数だけでなく、多くの関数で「動的配列数式(スピル)」が使えます。
先回と同様な表データですが、簡単な例を示します。
下図の表データにおいて、予め B4~B9セル範囲に「単価」、C4~C9セル範囲に「数量」、F4セルに「消費税率」と名前付けしてあります。

 

まず D列の金額欄を計算してみます。
D4セルを選択し、「=単価*数量」と入力し [Enter]します。
すると、D4~D9セル範囲に個々の商品の単価×数量が計算され表示されました。(下図)

 

D4~D9セル範囲が青い境界線で囲まれていますね。
これがスピル領域であることを示していますが、領域外のセルを選択すれば境界線は消えます。
また、数式を入力した D4セルを選択したときは、数式バーに「=単価*数量」と普通に表示されますが、D5~D9セルのいずれかを選択すると数式バーの表示が薄くなります。
これをゴーストと呼びます。

少し悪戯をしてみます。
D6セルに「=B6*C6」と入力し、予め値を入れておきます。
その上で、先と同様に D4セルに「=単価*数量」と入力し [Enter]します。
すると「#SPILL!」エラーが出ました。(下図)

 

D4セルを選択し、エラーオプションを開いてみると、その 1行目に「スピル範囲が空白ではありません」と表示されています。(下図)

 

つまり、返す答えとして 6つのセルが必要なのに、D6セルに数式(数値)が入っているため、スピルできないというエラー表示をしています。
「動的」とは言え、空白でないセルに強制的に結果を入力することはしません。
D6セルを [Delete]またはクリアすれば正しくスピルされます。

残りは同様にできます。
D4~D9セル範囲を「金額」と名前付けしておけば、E4セルに「=金額*消費税率」と入力し [Enter]すれば E4~E9セルに消費税額が求まり、E4~E9セル範囲を「消費税額」と名前付けしておけば、F4セルに「=金額+消費税額」と入力し [Enter]すれば F4~F9セルに合計金額が求まります。(下図)

 

上記の例は、簡単のため“固定的なサイズ”のセルにスピルさせたものですが、例えば A11セルに「=FILTER(合計金額,合計金額>500)」と入力し [Enter]すると、下図のように合計金額が 500より大きいものをスピルしてくれます。

 

500という値を変更すれば、スピル領域は変化するわけで、これが「動的」ということですね。

「スピル」に関して、少し注意すべきことがありますので、次回に補ってみます。