Excelの「#スピル!」エラーの直し方|空に見えるセルでも起きる

Excelの「#スピル!」エラーの直し方|空に見えるセルでも起きる
当サイトはアフィリエイト広告を利用しています。
この記事に出てくる用語
  • スピル … 1つの数式の結果が、隣のセルへ自動で並ぶ機能。Excel 2021以降とMicrosoft 365で使える

結論:エラーのセルの下を範囲ごと選んで、Deleteキーで消す

「#スピル!」は、数式が結果を並べようとした場所に、別の何かが入っているときに出るエラーです。
数式そのものが間違っているわけではありません。原因は、たいてい広がる先のセルにあります。
エラーのセルの下(または右)に入っているものを消せば、多くはその場で直ります。

ここでつまずきやすい点が1つあります。
見た目が空のセルでも、このエラーは起きます。
半角スペースが1つ入っているだけでも、エラーになります。

「何も入っていないのに直らない」ときは、スペースのような見えない文字が入っていることがあります。
だから、空に見えても範囲ごと選んでDeleteキーで消すのが確実です。

なお、英語版のExcelでは同じエラーが「#SPILL!」と表示されます。
表示が違うだけで、原因も直し方も同じです。

よくある原因は次の5つです。

原因直し方
広がる先に文字や数値が入っている範囲ごと選んでDeleteキー(すぐ下の手順)
広がる先が空に見える(スペースなどが入っている)同じ。見た目に関係なく範囲ごと選んでDeleteキー
広がる先に結合セルがある結合を解除する(「それでも直らないとき」)
数式をテーブルの中に書いているテーブルの外に書くか、普通の表に戻す(同上)
数式が列全体(A:A)を参照しているA1:A100 のように範囲を区切る(同上)

直し方(5ステップ)

じゃま物を消す手順

  1. エラーが出ているセルをクリックする
  2. 画面上部の入力欄(数式バー)を見て、数式が何行ぶんの結果を返すかを確認する(=A1:A5*2 なら5行)
  3. エラーのセルの1つ下のセルをクリックする(エラーのセル自体は選ばない。ここに数式が入っている)
  4. そこから下へドラッグして、手順2で数えた行数ぶんを選ぶ(多めでも構わない)
  5. Deleteキーを押す

手順2の行数は、数式が参照している範囲の行数と同じです。
自分の数式が B2:B101 を参照しているなら、100行と読み替えてください。
結果が何行になるか決まっていない数式(条件で絞り込む関数など)は、多めに選んで消せば足ります。

参照が横向き(A1:E1 など)の場合、結果は下ではなく右へ並びます。
手順3〜4の「下」を「右」に読み替えてください。

ただし、消す前に1つだけ確認してください。
選んだ範囲に必要なデータが入っているなら、消すのではなく数式のほうを動かします。
数式のセルをクリックして Ctrl+X で切り取り、空いている場所をクリックして Ctrl+V で貼り付けます。

うまくいったかの確認

Deleteキーを押した直後に「#スピル!」の表示が消え、
数式のセルから下(右)へ結果が並んでいれば直っています。

表示は消えたのに結果が並ばないときは、数式ごと消してしまった可能性があります。
Ctrl+Zで戻して、手順3からやり直してください。

消したくないときは、数式の先頭に「@」を付ける

数式の先頭に「@」を付けると、結果を広げずに1つだけ返すようになります。
=A1:A5*2 なら =@A1:A5*2 に書き換えます。
じゃま物を消さなくてもエラーは消え、結果が1つだけ返ります。

ただし、返るのは数式と同じ行にあたる1つだけです。
数式の行が参照範囲から外れていると、#VALUE! という別のエラーになります。
5行ぶんの結果が必要な作業には使えません。
その場合は、先ほどの Ctrl+X と Ctrl+V で、数式を空いている列へ移してください。

それでも直らないとき

範囲を消してもエラーが残るときは、原因が「入っている中身」ではなく別の場所にあります。
よくあるのは、次の3つです。

広がる先に結合セルがある

結果が広がる範囲に結合セルがあると、中身が空でもエラーになります。

結合セルは、まわりよりマス目が大きく見えるセルです。
エラーのセルの下(右)に大きいマス目があれば、それが原因です。

解除は2手です。
その結合セルをクリックして、ホームタブの「セルを結合して中央揃え」を1回クリックします。
これで普通のセルに戻ります。

注意点が1つあります。
結合されていないセルを選んでこのボタンを押すと、逆に結合されてしまいます。
必ず、結合セルそのものを選んでから押してください。

数式がテーブルの中にある

まず、自分の表がテーブルかどうかを見分けます。
表の中のセルをクリックして、画面上部に「テーブルデザイン」タブが現れたらテーブルです。
現れなければテーブルではないので、この項目は関係ありません。

テーブルの中では、結果が広がる数式は使えません。
対処は2つあります。

  • 数式をテーブルの外のセルに書く。 テーブルのすぐ下の行やすぐ右の列に書くと、テーブルが自動で広がって数式のセルを取り込むことがあります。1行(1列)空けると安全です
  • テーブルを普通の表に戻す。 テーブルの中のセルをクリックし、「テーブルデザイン」タブの「範囲に変換」を押して、確認の画面で「はい」を選びます

範囲に戻しても、入力済みのデータは消えません。
見出しの「▼」ボタン(絞り込み)など、テーブルの機能だけが無くなります。

数式が列全体(A:A)を参照している

=A:A*2 のように列全体を参照した数式は、列の全行ぶん、1048576行の結果を返そうとします。
シートの行数もちょうど1048576行なので、数式を2行目以降に置くと下端からはみ出します。
それで #スピル! になります。

直し方は、参照を範囲で区切ることです。
=A:A*2 なら =A1:A100*2 のように、データのある行数に合わせて書き換えます。
1行目に置けばエラーは出ませんが、104万行に結果が広がってファイルが重くなるため、区切るのが確実です。

確認範囲

  • Windows版のExcel(Office Home and Business 2024・日本語版)の話です。タブやボタンの名前は、バージョンによって違うことがあります
  • エラーのセルの横に出る「!」マークのメニューから操作する方法は、この記事では扱っていません
  • スピルが使えるのは Excel 2021 以降と Microsoft 365 です。Excel 2019 以前には広がる仕組み自体が無いため、このエラーも出ません

XLOOKUPなど、結果が広がる関数を実際の作業で使う場面は、
Excelで2つの表を突合する手順で扱っています。

コメント

タイトルとURLをコピーしました