この記事に出てくる用語
- スピル … 1つの数式の結果が、隣のセルへ自動で並ぶ機能。Excel 2021以降とMicrosoft 365で使える
結論:エラーのセルの下を範囲ごと選んで、Deleteキーで消す
「#スピル!」は、数式が結果を並べようとした場所に、別の何かが入っているときに出るエラーです。
数式そのものが間違っているわけではありません。原因は、たいてい広がる先のセルにあります。
エラーのセルの下(または右)に入っているものを消せば、多くはその場で直ります。
ここでつまずきやすい点が1つあります。
見た目が空のセルでも、このエラーは起きます。
半角スペースが1つ入っているだけでも、エラーになります。
「何も入っていないのに直らない」ときは、スペースのような見えない文字が入っていることがあります。
だから、空に見えても範囲ごと選んでDeleteキーで消すのが確実です。
なお、英語版のExcelでは同じエラーが「#SPILL!」と表示されます。
表示が違うだけで、原因も直し方も同じです。
よくある原因は次の5つです。
| 原因 | 直し方 |
|---|---|
| 広がる先に文字や数値が入っている | 範囲ごと選んでDeleteキー(すぐ下の手順) |
| 広がる先が空に見える(スペースなどが入っている) | 同じ。見た目に関係なく範囲ごと選んでDeleteキー |
| 広がる先に結合セルがある | 結合を解除する(「それでも直らないとき」) |
| 数式をテーブルの中に書いている | テーブルの外に書くか、普通の表に戻す(同上) |
数式が列全体(A:A)を参照している | A1:A100 のように範囲を区切る(同上) |
直し方(5ステップ)
じゃま物を消す手順
- エラーが出ているセルをクリックする
- 画面上部の入力欄(数式バー)を見て、数式が何行ぶんの結果を返すかを確認する(
=A1:A5*2なら5行) - エラーのセルの1つ下のセルをクリックする(エラーのセル自体は選ばない。ここに数式が入っている)
- そこから下へドラッグして、手順2で数えた行数ぶんを選ぶ(多めでも構わない)
- 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つの表を突合する手順で扱っています。


コメント