Excelで#SPILL!エラーが起きる原因と直し方

関数(Deep‑Dive Function Series)

SPILL! エラーの原因と直し方|Excelでスピルできない4つの理由を完全解説し、「なぜ #SPILL! は起きるのか」を理解して、スピルできない原因を一発で見抜く実務的なチェック手順を身につける

Excel では FILTER・SEQUENCE・UNIQUE など、スピルを前提にした関数が急速に広がっています。
その一方で「正しい式なのに #SPILL!…」というトラブルは、実務で非常によく起きます。
原因は複雑に見えて、実はごく限られたパターンに必ず収まります。
どこを確認すれば直せるのかを、再現できる手順で整理していきます。
この記事を読めば、スピルエラーの“原因特定”が迷わずできるようになります。

パターン1:スピル先がふさがっている(#SPILL!)

🧮SEQUENCE関数を使って1〜5を生成してください。

SEQUENCE 関数で 1〜5 を生成しようとしているのに、結果が #SPILL! になるケースです。

原因はシンプルで、スピル先のセルに既存データが残っているためです。
配列を展開したい範囲に、値・文字・数式などが1つでもあると、Excel はスピルできません。

今回の例では、A列に「Excel_Restart_ラボ」という文字列が残っているため、
SEQUENCE(5) の結果を展開できず #SPILL! が返されています。

スピルエラーが出たら、まず「結果が広がる範囲に何か残っていないか」を確認し、
邪魔しているデータを削除してから再計算するのが基本です。

パターン2:参照範囲のズレ(#VALUE!)

🧮FILTER関数を使って「OK の行だけ」を抽出してください。

FILTER 関数で「OK の行だけ」を抽出しようとしているのに、#SPILL! ではなく #VALUE! が出るケースです。

この場合の原因は、データ範囲と条件範囲の行数が一致していないことです。
FILTER は「データ範囲」と「TRUE/FALSE の判定配列」を 1 対 1 で対応させる必要がありますが、
行数が違うと判定配列そのものを作れず、スピル処理に入る前の段階で #VALUE! を返します。

典型例は、A2:C11(10 行)をデータ範囲にしながら、
条件範囲を B2:B10(9 行)など、途中までしか指定しているパターンです。

参照範囲は「同じ行数」でそろえることが絶対条件です。
条件範囲を B2:B11 に修正すると、FILTER は正しく判定配列を作成できるようになり、
スピルも正常に行われます。

パターン3:結合セルが含まれている(#SPILL!)

次の表を使って、FILTER 関数で「OK の行だけ」を抽出してください。ただし、抽出先のセルには 結合セルが含まれているため、#SPILL! が発生します。

FILTER 関数で「OK の行だけ」を抽出しようとしているのに、
抽出先のセルが結合されているため #SPILL! になるケースです。

FILTER の結果は、複数セルに自動的にスピルして表示されます。
しかし、スピル先の範囲に結合セルが1つでも含まれていると、
Excel は必要なセル数を確保できず、結果を展開できません。

今回の例では、抽出先のセル(E5:E7)が結合されているため、
FILTER が必要な行数分のセルを確保できず、#SPILL! を返しています。

結合セルは見落としやすく、実務でもよく原因になります。
スピルエラーが出たときは、「結果が広がる範囲に結合セルがないか」を確認し、
結合を解除してから再計算するのがポイントです。

パターン4:テーブル内でスピルできない(#SPILL!)

🧮次の表を使って、FILTER 関数で「OK の行だけ」を抽出してください。
ただし、抽出先のセルが “テーブル(Ctrl+T)” の中にあるため、#SPILL! が発生します。
なぜエラーになるのか説明しなさい。

FILTER 関数で「OK の行だけ」を抽出しようとしているのに、
抽出先のセルがテーブル(Ctrl+T)の中にあるため #SPILL! になるケースです。

Excel のテーブル内では、スピルが仕様上禁止されています。
そのため、テーブルの中に FILTER などのスピル関数を入力すると、
結果を複数行に展開しようとした時点でテーブル構造に阻まれ、#SPILL! が返されます。

今回の例では、抽出先のセルがテーブルの一部になっているため、
FILTER が必要な行数分のセルを確保できず、スピルできません。

テーブルを参照すること自体は問題ありません。
重要なのは「式を置く場所」であり、テーブルの外に FILTER を入力すれば、
同じ式でも正常にスピルします。

スピルできない原因 4パターン(まとめ)

■ パターン1:スピル先がふさがっている
エラー:#SPILL!
原因:抽出結果を展開したい範囲に、値・文字・数式などが残っているためスピルできない
典型例:抽出先の下に古いデータが残っている
解決策:スピル先を完全に空にする

■ パターン2:参照範囲のズレ
エラー:#VALUE!
原因:データ範囲と条件範囲の行数が一致しておらず、TRUE/FALSE の判定配列を作れない
典型例:データ範囲より条件範囲が短い、または途中までしか指定している
解決策:データ範囲と条件範囲を「同じ行数」でそろえる

■ パターン3:結合セルが含まれている
エラー:#SPILL!
原因:スピル先に結合セルがあるため、必要なセル数を確保できない
典型例:抽出先のセルが複数行に結合されている
解決策:結合セルを解除してから再計算する

■ パターン4:テーブル内でスピルできない
エラー:#SPILL!
原因:Excel のテーブル(Ctrl+T)内はスピル非対応のため、結果を複数行に展開できない
典型例:テーブル内に FILTER を入力している
解決策:テーブル外に式を置く

無料Excel教材ダウンロード|関数練習・実務問題ファイル集の使い方

この記事の講習問題は、無料ファイル倉庫からダウンロードして、
実際のExcelシート上で手を動かしながら理解を深めてください。
安心して使える学習用ファイルで、初心者でもそのまま再現できます。
Excelの実務ロジックが自然と身につく、無料の学習教材です。

講習問題では理解できたら、黄色のセルに入っている計算式を一度消して、実際に自分で入力してみてください。
計算式を消しても、メモ欄に保存してある式を貼り付ければ元の状態を復元できます。
練習と復元を繰り返すことで、計算式の構造が安定して身につきます

👉“スピルエラー”

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