【Excel】エラー「#SPILL!」の直し方|スピル範囲が重なる・テーブル内で使えない原因

【Excel】エラー「#SPILL!」の直し方|スピル範囲が重なる・テーブル内で使えない原因
🛡️ 超解決

Excelの「#SPILL!」は、数式が返す複数の結果をセルへ展開できない時に出るエラーです。日本語版では「#スピル!」と表示される場合があります。まずエラーの詳細を確認し、展開先に既存データがあるのか、結合セルやテーブルなど別の原因なのかを分けて調べます。

範囲内を一括削除する前に、入力済みの値や数式を退避してください。セルの色や罫線だけを消す必要はありません。見えない空白文字や、空文字列を返す数式は、表示が空に見えてもセルを使用しています。

ADVERTISEMENT

1. 数式が結果を置こうとしている範囲を確認する

SEQUENCE、FILTER、UNIQUEなどの動的配列を使う式は、一つのセルへ入力した式から複数セルへ結果を広げます。式を入れたセルを選択すると、予定している展開範囲が枠線で示される場合があります。エラーのアイコンを開き、表示された原因も確認しましょう。

例えばB2へ=SEQUENCE(3)を入れると、B2・B3・B4へ1・2・3を表示します。B3に別の値があると、その値を上書きせずエラーになります。式が間違っているとは限らず、表示先が埋まっているだけのケースです。動的配列や各関数に対応するExcelで確認してください。

※ お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. 入力済みデータを消さず、展開範囲の外へ退避する

  1. エラーのセルを選び、展開予定の範囲を確認します。
  2. エラーの詳細に妨げているセルを選択する項目があれば利用します。
  3. 該当セルの数式バーを見て、値・数式・空白文字のどれが入っているか調べます。
  4. 必要なデータなら、別の空き範囲へコピーして値と数式を確認します。参照関係がある場合は、数式側の出力場所を変える方が適切か検討します。
  5. 元の展開先を空け、期待する件数と結果が表示されたか確認します。

次の例ではB3にある99をE3へ退避してから、B3を空けています。同じ式のままで1・2・3が表示されるため、原因が式そのものではなくB3の使用状態だったと分かります。実際の業務表では、99に相当する値の用途を確認せず消さないでください。

B3に99があるとB2のSEQUENCEがスピルエラーになり、99を退避するとB2からB4へ1・2・3が展開される比較
Excel 16.0でSEQUENCE(3)を計算したセル出力。点線・実線は説明用の注記です。99は範囲外のE3へ退避しています。

罫線・色・数値の表示形式だけでは、通常この「範囲が空ではない」原因にはなりません。一見空欄でもスペースや=""が入っていれば別です。不要な内容だけを消す場面で「すべてクリア」を使うと、必要な書式まで失うので操作を分けましょう。

3. テーブル内なら、出力する数式を外へ移す

Excelのテーブル内では、複数セルへスピルする配列数式は使えません。集計元のテーブルを残したまま、結果を出す数式をテーブルの外の空きセルへ置く方法を先に検討します。元データをテーブルにすることと、スピル結果をテーブル内へ出すことは別です。

テーブルを通常の範囲へ変換する選択肢もありますが、行の自動拡張や構造化参照などへの影響を確認する必要があります。解除する場合はテーブル内のセルを選び、表示される「テーブル デザイン」タブから「範囲に変換」を使います。「数式」タブ内の機能ではありません。表示名は版によって異なります。

4. 結合セルがある場合は、出力位置を変える方法も選べる

展開先に結合セルが含まれていると、結果を並べられません。まず、結合部分を避けた空き範囲へ式を置いて結果を比較します。帳票の見た目を保つ必要があるなら、集計用の別シートへ結果を出し、帳票から必要な値だけ参照する方法もあります。

結合を解除する時は、元のブックを残し、解除後の文字の位置や印刷結果を確認します。複数のセルへ入力されていた値が結合時に失われている場合、解除だけでは復元しません。エラーを消すために、意味を確認せずシート全体の結合を解除しないでください。

5. 空きセルがあるのに直らない時は、詳細メッセージを見る

  • シートの端を超える:列全体など必要以上に広い参照がないか確認し、実データの範囲へ絞ります。出力開始行も確認します。
  • サイズが不明:再計算ごとに配列の大きさが変わる式などを確認します。結果の件数を別セルで固定して比較すると原因を調べやすくなります。
  • メモリ不足:巨大な配列や不要な全列参照を減らし、処理を分けます。必要な入力データまで削らないよう注意します。
  • 原因が判別できない:数式・参照先・エラー詳細を記録し、ブックのコピーで小さな範囲へ置き換えて再現するか調べます。

「サイズが不明」と「シートの端を超える」は別の原因です。警告の文言に合う項目をMicrosoftの#SPILL!エラーの説明で確認してください。

6. エラーが消えた後は、件数と元データを照合する

結果が表示されても、必要な行がすべて含まれているとは限りません。FILTERの条件、参照範囲の末尾、除外されたデータを確認します。退避した値は用途を確かめ、別の集計や帳票で使われているなら参照切れがないか見直します。

結果の一部だけが欲しいのに毎回大きな範囲へ展開している場合は、数式の目的自体を確認します。エラーを抑えるためだけに@を追加すると、複数ある結果の一部しか返さなくなることがあります。全件を取り出すのか1件を取り出すのかを決めてから式を調整してください。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。
この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】