前回の「Excel FILTER関数とUNIQUE関数を使ってドロップダウンリスト」記事にも出てきましたが、スピル範囲演算子「#」についてもう少し補足しておきます。

このスピル範囲演算子「#」は過去にも「Excel 行・列やシートの参照(まとめ)」記事でもほんの少し登場しましたが、これからの Excelでは「スピル」への理解がとても重要な意味を持ちますので、今回だけでなく今後も機を見てご紹介していこうと思います。

スピル あるいは 動的配列数式について、下図の表データを使っておさらいしておきましょう。

 

セル範囲 B2~B7には「単価」、セル範囲 C2~C7には「数量」と名前付けしてあります。
セル D2に「=単価*数量」と入力し [Enter]すると、セル D2はもちろん、セル D7まで演算結果が配置されます。(下図)

 

スピル領域内の任意のセルを選択したとき、その範囲を囲む境界線を青線とし、その周辺に向かって薄く影を施して表示します。

D列の演算結果を使って、次にそれらの消費税額を求めてみます。
セル F2に「=D2#*10%」と入力し [Enter]します。(下図)

 

この数式にスピル範囲演算子「#」が登場しました。
「#」をセル番地の後に付けることにより、スピル範囲全体を参照できます。
そのため、この例ではスピル範囲 D2~D7 に相当します。

セル F2の数式を「=D2:D7*10%」としても同じ結果となります。
でも、8行めにデータが追加されたらどうなるでしょう。
これに合わせて「単価」「数量」の参照範囲も変更すれば、セル D8まで計算されます。
ところが、セル F2の数式が「=D2:D7*10%」のままであるとセル F7までしか計算されません。
これを「=D2#*10%」とすれば、自動的にセル F7までスピルされます。(下図)

 

このように、スピル範囲演算子「#」を使うことによりスピル範囲全体を自動的に参照してくれるので、後のデータ追加・削除・変更があった場合でも数式などの再編集を最小限にしてくれます。

スピルに対応した数式や関数では、その演算内容によってスピル範囲が可変であることが多いので、スピル範囲をさらに参照するときにこのスピル範囲演算子「#」がどうしても必要になります。

同じ表データを使ってもうひとつ例を示します。
セル F2に「=SORT(FILTER(HSTACK(A2:A8,D2#),D2#>=500),2,-1)」と入力すると、D列の金額が 500以上である「商品」と「金額」を取出し、さらに「金額」が高い順に並べて表示されます。(下図)

 

なお、数式中に出てきた「HSTACK」関数は、配列を水平方向に順番に追加して配列を返す関数です。
Microsoftのサポートページ「HSTACK関数」をご参照ください。