Excelスピルエラーの直し方|#スピル!が消えない原因

不具合・バク
スポンサーリンク

「ExcelでFILTER関数を入力したら#スピル!と表示された」「数式は合っていると思うのに、何度入力し直してもエラーが消えない」と困っていませんか?

#スピル!は、数式そのものが間違っているとは限りません。

FILTERやUNIQUEなど、複数の結果を返す数式では、計算結果を周囲のセルへ自動的に広げて表示します。

この仕組みを「スピル」と呼びますが、結果を表示する予定のセルに別の値や結合セルなどがあると、Excelが結果を展開できず「#スピル!」になります。

そのため、Excel スピル エラーの直し方を調べる場合は、最初に数式を書き直すのではなく、結果が表示される範囲を確認することが大切ですね。

なお、「Ctrl+Vを押しても貼り付けられない」という症状は#スピル!とは別の問題です。

コピー・貼り付けそのものができない場合は、Excelでコピー・貼り付けできない不具合はこちらを確認してみてください。

この記事では、Excelで「#スピル!」が消えない原因と、FILTER・UNIQUEなどで発生した場合の直し方を順番に解説します。

▶本記事の概要

  • Excelの「#スピル!」エラーとは
  • Excelスピルエラーが消えない主な原因
  • Excelスピルエラーの直し方
  • FILTER・UNIQUEで#スピル!が出る時の確認
  • まとめ

Excelの「#スピル!」エラーとは

  • 複数の計算結果を周囲のセルへ表示する仕組み
  • 数式が正しくても表示場所が塞がるとエラーになる
  • FILTERやUNIQUEなどで発生しやすい

複数の結果を周囲のセルへ表示する仕組み

Microsoftによると、Excelでは数式が複数の値を返した際、その結果を隣接するセルへ自動的に配置する仕組みがあります。

これが「スピル」です。

例えば、次のようなFILTER関数を入力したとします。

=FILTER(A2:C20,C2:C20="東京")

条件に該当するデータが5行あれば、数式を入力した1つのセルだけではなく、その下や右側のセルにも結果が自動的に広がります。

UNIQUE関数でも同じように、重複を取り除いた複数の結果が周囲へ展開されます。

数式を入力したセル以外へ結果が自動的に広がること自体は、Excelの正常な動作です。

Microsoft公式の動的配列については、動的配列数式とスピル配列の説明はこちらから確認できます。

数式が合っていても#スピル!になる

#VALUE!や#NAME?などを見ると、「数式そのものを間違えたのかな」と感じる方もいると思います。

しかし、#スピル!では数式の書き方が正しくてもエラーになることがあります。

例えば、FILTER関数が3行分の結果を返そうとしているのに、2行目の表示先に「確認済み」という文字が入っていれば、Excelはそのセルを上書きして結果を表示しません。

その結果、スピル範囲が空いていないため#スピル!が表示されます。

「昨日までは使えていたのに急に#スピル!になった」という場合も、数式ではなく周囲のセルへ新しい値を入力したことが原因かもしれません。

Excelスピルエラーが消えない主な原因

  • スピル先に別の値が入っている
  • 結合セルが含まれている
  • Excelテーブル内に動的配列数式を入力している
  • 結果がシートの端を超えている
  • 結果の大きさをExcelが確定できない

Microsoft公式では、#スピル!について原因別に対処方法を案内しています。

よくあるケースを整理すると次のようになります。

原因 確認する場所 主な直し方
表示先に値がある 数式の周囲 邪魔になっているセルを空欄にする
結合セルがある スピル予定範囲 結合を解除するか数式を移動する
テーブル内に数式がある 数式を入力した場所 テーブル外へ数式を移動する
シート端を超える 参照範囲と数式位置 参照範囲を小さくする
結果サイズが変化し続ける RAND系などの数式 結果サイズが安定する式へ変更する
メモリ不足 非常に大きな配列や範囲 参照範囲を小さくする

スピル先に別の値が入っている

Excel #スピル 消えない症状で、最初に確認したいのが結果の表示先です。

Microsoft公式でも「スピル範囲が空ではない」ケースが案内されています。

例えばA2へUNIQUE関数を入力し、結果がA2~A10へ広がる場合、A7に文字や数値が入っていると結果を正常に展開できません。

見た目では何も入っていないように感じても、スペースなどが入力されている可能性もあります。

#スピル!と表示されているセルをクリックすると、結果を表示する予定だった範囲が破線で表示されます。

さらにエラー表示から「障害物セルの選択」を利用すると、展開を妨げているセルへ移動できます。

必要なデータでなければ削除し、残したいデータなら別の場所へ移動するとよいでしょう。

スピル範囲に結合セルがある

セルを結合して見出しを作っている表では、Excel スピル 結合セルが原因になるケースがあります。

Microsoftによると、動的配列数式は結合されたセルへ結果をスピルできません。

数式を入力しているセル自体が結合されていなくても、結果が展開される範囲の途中に結合セルがあれば#スピル!になります。

この場合は次のどちらかで対応できます。

  • 結果を表示する範囲にあるセル結合を解除する
  • 結合セルと重ならない場所へ数式を移動する

見た目を整えるためにセル結合を多く使っているファイルほど確認してみたいポイントですね。

Excelテーブル内へ数式を入力している

FILTERやUNIQUEをテーブル内へ入力して#スピル!になる場合もあります。

Microsoft公式では、スピルする動的配列数式はExcelテーブル内部ではサポートされていないと案内しています。

例えば、Ctrl+Tで作成したテーブルの列へUNIQUE関数を入力し、結果を複数行へ展開しようとすると正常にスピルできません。

この場合は、数式をテーブルの外にある通常セルへ移動します。

どうしてもその場所で利用したい場合は、「テーブルデザイン」から「範囲に変換」を利用して通常のセル範囲へ戻す方法もあります。

ただし、テーブルとして利用していた機能が不要か確認してから変更してください。

結果がワークシートの端を超えている

参照範囲が大きすぎる場合も#スピル!につながります。

例えば、列全体を参照する数式では100万行を超える結果を作ろうとすることがあります。

Excelのワークシートで利用できる行数には上限があるため、数式を入力した位置によっては結果がシートの外へはみ出してしまいます。

例えば必要なデータがA2~A500までなら、A:Aのような列全体指定ではなく、A2:A500のように実際に必要な範囲へ絞ると分かりやすいでしょう。

結果のサイズをExcelが確定できない

少し特殊ですが、計算のたびに配列サイズが変化する数式でも#スピル!が発生します。

Microsoft公式では、次のような例が紹介されています。

=SEQUENCE(RANDBETWEEN(1,1000))

RANDBETWEENによって配列の行数が計算ごとに変わるため、Excelが最終的なスピル範囲を確定できない場合があります。

通常のFILTER・UNIQUEだけを使っている場合は優先度が低い原因なので、まず表示先の値や結合セルから確認すると効率的ですね。

Microsoft公式の原因一覧はExcelの#スピル!エラー修正方法はこちらで確認できます。

Excelスピルエラーの直し方

  • #スピル!のセルを選択して予定範囲を見る
  • 障害物セルを削除または移動する
  • 結合セルやテーブルを確認する
  • 参照範囲を必要なサイズまで小さくする

最初に#スピル!のセルをクリックする

原因が分からない場合は、まず#スピル!と表示されているセルを選択してください。

数式が本来結果を表示しようとしている範囲が、破線の枠で表示されます。

この破線の中を確認すると、途中に数字・文字・結合セルなどがないか見つけやすくなります。

「どこへ結果を出そうとして失敗しているのか」を最初に見ることが、Excel スピル エラーの直し方として分かりやすい方法です。

「障害物セルの選択」を使う

表示先に別の値があるケースでは、手作業で大量のセルを探さなくても確認できます。

#スピル!のセルを選択するとエラーチェックのアイコンが表示されるため、そこから「障害物セルの選択」を利用します。

Excelがスピルを妨げていると判断したセルへ移動するので、内容を確認してください。

削除して問題ない値なら消し、必要なデータであればスピル範囲外へ移動します。

障害物がなくなると、数式を入力し直さなくても自動的に結果が展開される場合があります。

数式をテーブルの外へ移動する

セルが空いているのにFILTER スピル エラーが発生する場合は、そのセルがExcelテーブル内ではないか確認します。

テーブルをクリックした際に「テーブルデザイン」が表示されるなら、その範囲は通常セルではなくExcelテーブルです。

FILTERやUNIQUEの結果を複数セルへ展開したい場合は、テーブルの外にある空白セルへ数式を入力してみてください。

なお、元データをテーブルとして管理し、そのテーブルをFILTERやUNIQUEから参照することは可能です。

問題になるのは、スピルする数式自体をテーブル内部へ配置するケースですね。

列全体ではなく必要な範囲を指定する

参照範囲がA:Aや1:1などになっている場合は、実際にデータが入っている範囲へ変更してみます。

例えば次のように変更できます。

=UNIQUE(A:A)

ではなく、

=UNIQUE(A2:A1000)

のように必要な範囲へ絞ります。

シート端を超える問題だけではなく、大きすぎる配列によるメモリ使用量も減らせる可能性があります。

Officeの更新不具合と決めつけない

Excelで急にエラーが出ると、「Windows UpdateやOffice更新で壊れたのでは?」と考える方もいると思います。

実際にExcelでは更新後に特定の機能で既知問題が発生するケースがあります。

しかし、#スピル!はMicrosoftが仕様として原因と対処方法を公開しているエラーです。

まずはスピル範囲、結合セル、テーブル、参照範囲を確認し、最初から更新プログラムを削除する方向へ進まないほうが原因を切り分けやすいでしょう。

更新後に「コピーはできるのに貼り付けだけできない」という場合は、今回とは別にExcelのコピー・貼り付け不具合はこちらで解説しています。

FILTER・UNIQUEで#スピル!が出る時の確認

  • FILTERの結果が広がるスペースを確保する
  • UNIQUEの結果数は元データによって変化する
  • 別ブック参照では別のエラーにも注意する
  • Excelをよく使う場合は関数解説書も役立つ

FILTERでは抽出結果の大きさが変わる

FILTER関数は条件に一致したデータをまとめて返します。

例えば、昨日は3件だけだった結果が、新しいデータの追加によって今日は10件になることもあります。

昨日まで正常だった数式でも、結果が増えた先に別のデータが入力されていると#スピル!になる可能性があります。

そのためFILTERを利用する場所では、将来的に結果が増えても困らない程度の空白範囲を確保しておくと扱いやすいですね。

Microsoft公式によると、FILTERは数式の最終結果として配列を返す場合、必要なサイズの範囲を動的に作成します。

FILTER関数の仕様はMicrosoft公式のFILTER関数はこちらで確認できます。

UNIQUEも結果数が変化する

UNIQUE関数は、指定した範囲から重複を除いた値を一覧として返します。

例えば商品名が100件入力されていて、その中に30種類の商品があれば、UNIQUEの結果は複数セルへ展開されます。

新しい種類の商品が追加されると結果も増えるため、下のセルを別用途に使っていると突然#スピル!になる場合があります。

「数式を変更していないのにExcel #スピル 消えない状態になった」という場合は、元データが増えていないかも確認してください。

UNIQUEについてはMicrosoft公式のUNIQUE関数はこちらから確認できます。

翻訳機能のエラーとは別に考える

Excelでは、数式以外にも翻訳機能などでエラーが発生することがあります。

ただし、翻訳で「結果が見つかりません」と表示される問題と#スピル!は原因が異なります。

Word・Excelの翻訳機能だけ正常に動かない場合は、Word・Excelで翻訳できない時の確認方法はこちらで詳しく紹介しています。

Excel関数を学びたい場合は対応バージョンを確認する

FILTER・UNIQUE・SORTなどの動的配列を日常的に使うのであれば、Excel関数をまとめて確認できる解説書があると便利だと思います。

本を選ぶ場合は、Microsoft 365やExcel 2024など、自分が利用しているExcelのバージョンへ対応しているか確認してください。

特にFILTER・UNIQUE・SORT・SORTBY・SEQUENCEなど、新しい関数や動的配列を扱っている本なら今回の#スピル!を理解する際にも役立ちます。

Excelの入力作業で使っているArteckワイヤレスキーボード

Excelで大量の文字や数字を入力する方には、キーボードの使いやすさも作業効率に影響すると感じます。

私はこれまでさまざまなキーボードを使ってきましたが、その中で最終的に使いやすいと感じているのがArteck 2.4Gワイヤレスキーボードです。

特に気に入っているのは、キーを押したときの感触とサイズ感ですね。

フルサイズなのでExcelで数字を入力する作業にも使いやすく、普段の文章入力でも扱いやすいと感じています。

さらに、裏面にはステンレス素材が使われており、価格を考えると質感にも高級感があります。

押し心地、大きさ、裏面のステンレスによる質感、それらを含めたコストパフォーマンスの良さが、いろいろなキーボードを使った中で私がこの製品へ落ち着いた理由です。


Excelファイルのバックアップ用にも使えるSanDiskポータブルSSD

仕事でExcelファイルを多く扱っている場合は、重要なファイルのバックアップ先を用意している方も多いと思います。

外付けストレージの候補として使いやすいのがSanDisk ポータブルSSD 1TBです。

1TBの容量があり、Excelファイルだけではなく写真や動画など、PC内のさまざまなデータをまとめて保存できます。

ただし、SSDを接続しても#スピル!エラーが直るわけではありません。

あくまで普段のPCデータや重要なExcelファイルを別の場所へ保管したい場合の候補として考えてください。


まとめ

Excelで「#スピル!」が表示された場合は、最初から数式が間違っていると考えず、まず結果が展開される予定の範囲を確認してみてください。

FILTERやUNIQUEなどの動的配列数式では、数式を入力した1つのセルから複数セルへ自動的に結果が広がります。

その途中に文字や数字が入力されていたり、結合セルが含まれていたりするとExcelは結果を展開できません。

また、テーブル内部へ動的配列数式を入力している場合や、参照範囲が大きすぎてワークシートの端を超える場合にも#スピル!が発生します。

特にFILTER・UNIQUEでは元データが増えると結果数も変化するため、昨日まで正常だった数式が突然#スピル!になるケースもあります。

「数式を確認する前に、スピル先が空いているか確認する」と覚えておくと原因を見つけやすいですね。

▶本記事の振り返り

  • #スピル!は複数の結果をセルへ展開できない時に表示される
  • 最初にスピル予定範囲へ別の値がないか確認する
  • 結合セルがある場合は解除または数式の移動を検討する
  • 動的配列数式はExcelテーブルの外へ配置する
  • 列全体参照など大きすぎる範囲は必要な範囲へ絞る
  • FILTERやUNIQUEでは結果数が後から増える場合もある

#スピル!のセルをクリックして破線の範囲を確認し、「障害物セルの選択」から原因となっているセルを探す方法から試してみてください。

コメント