スポンサーリンク
今回は、ExcelのMicrosoft365のバージョンで新たに使えるようになって話題をかっさらった「スピル」機能について、今更ながらだが取り上げる。
スピルは、本当に最近のバージョンのExcelで使えるようになったばかりの機能なので、事前にバージョンの確認が大事になる。
「スピル」の概要
スピルは、Excel使いなら「こういうことができないものなのか」と待ち望んだことがあるのではという機能だ。
スピルとはどういうものかについて一言で説明するのは難しいけど、堅苦しい言葉も交えて定義してみるとこんな感じかと思う。
たとえば縦10行・横10列に連続したセル範囲に同じ数式を入れたいとき
なのが
という感じ。
まあこんなことを言葉で言っても仕方がないので、実例で見てみる。
簡単なスピルの実例
たとえば下図で、A列とB列の文字列を結合したものを、D列の1行目~10行目に求めたいという場合。
通常の数式ならD1セルに
=A1 & B1
と入れてからそれをコピーしてD10セルまで貼り付けることになる。
A1・B1という、あくまで単一セルだけをまず指定するわけだ。

これがスピルを使ったやり方なら、起点のD1セルに
= A1:A10 & B1:B10
と、複数セル範囲をいきなり指定してしまう。

すると、上記で指定したセル範囲に従って、D1セルにしか入力していないはずの数式が自動的に、D10セルまで埋められてくれる。
ついでに、D1セル以外のセルについては下図のように、数式が灰色表示されるようになる(ゴーストというらしい)。
これがスピルだ。

SUMIFS関数で縦横にスピルを使う例
スピルは何も、上記で紹介した「&」演算子などでだけ使えるわけではない。
SUMIFSとかVLOOKUP、その他の諸関数でも同様に便利に使っていくことができる。
たとえば下図で、A列~D列の課・月ごと集計を求める場合。
まず通常のやり方なら、H2セルに
と数式を入れて、それをH2:J4セルにコピペするということになる。
そしてその場合、SUMIFS関数の検索条件である$G2とH$1の部分については単一セルを指定することになる。
元々SUMIFS関数の検索条件というのは、そうやって単一セルを指定する想定であるしね。

これが、スピルを使う場合は
と、検索条件の部分にもいきなり複数セル範囲を指定してH2セルに入力してしまえば良い。
そうすれば、自動的にH2~J4セルまで数式が埋められることになる。
スピルはこのように、セル範囲指定が関係するものなら幅広い数式で使用できるし、縦横を絡めて設定できる。

スピルされた範囲の扱い
スピル範囲演算子「#」
先ほど、H2:J4のセル範囲に、スピルの計算式を入れたが、そのセル範囲は全体でスピル範囲として設定される。
それを下図のようにスピル範囲の外で式で指定すると、スピル範囲演算子という「#」記号が表示される。
見て戸惑わない程度に、頭の片隅に入れておくと良いだろう。

スピル範囲の選択
スピルされたセル範囲は、ショートカットキー
Ctrl+A
または
Ctrl + Shift + Spaceキー
で選択できる。

スピルがエラーになるケース
スピル範囲に値がある場合
下図では、I3セルに既に値が入れられている。
この状態で、I3セルをスピル範囲の一部として指定するよう、スピル計算式を入れると

エラーになってしまう。これは結構やらかしがち。

この邪魔なI3セルの値をDeleteで消せば、いったん入力してエラーになったスピル式は、正しくセットし直されてくれる。

で、既にスピル範囲になっている中に何かの値を入力すると、またエラーになる。

結合セルがある場合
下図ではI3:J4セルが結合されている。
それら結合セルをスピル範囲として含むようスピルの計算式を入れると、

エラーになる。

テーブルの場合
下図ではD1:E11セルの範囲は「テーブル」として設定されているが、その中のE2セルにスピルの計算式を入れるとエラーになる。
テーブルの中ではスピルは使えないということだ。

テーブルには元々、入力した数式を最下端まで補完してくれる機能があるので、スピルと重複するからということだろう。
スポンサーリンク