Home / 用語 / SPILL(#SPILL!エラー)

SPILL(#SPILL!エラー)

※本ページにはプロモーション(広告)が含まれています












エラーコード

読みすぴる
英語SPILL

ひとことでいうと

Excel 365/2021以降の動的配列数式で発生する#SPILL!エラー。UNIQUE・FILTER・SORT等が返す結果配列を展開(スピル)する先のセルに既存データや結合セルがあり、配列を出力できない時に表示される。

詳しい解説

SPILL(スピル)はExcel 365およびExcel 2021以降に導入された動的配列機能の中核概念で、1つの数式が複数のセルへ自動的に結果を展開する仕組みを指します。従来は配列数式としてCtrl+Shift+Enterで確定する必要がありましたが、現代Excelでは通常のEnterだけで結果配列が自動的に隣接セルへ「こぼれ落ちる(spill)」ように展開されます。スピル先のセルが空でない・結合セルが含まれる・テーブル内であるなどの理由で配列を展開できない場合、#SPILL!エラーが表示されます。

## 動的配列とスピルの仕組み

スピルが発生する代表的な数式は以下の通りです。

1. **UNIQUE関数**: 重複を除いた一意の値リストを返す
2. **FILTER関数**: 条件に一致する複数行を返す
3. **SORT/SORTBY関数**: 並び替えた配列を返す
4. **SEQUENCE関数**: 連番の配列を生成
5. **RANDARRAY関数**: 乱数の配列を生成
6. **XLOOKUP関数**: 複数列を一度に取得(範囲指定時)
7. **TEXTSPLIT関数**: 文字列を分割した配列を返す(Excel 365)

スピル元セル(数式を入力したセル)の周囲を青枠で囲んだ「スピル範囲(Spill Range)」が形成され、ユーザーは元セル1つを編集するだけで配列全体を制御できます。スピル範囲全体を参照するには `A2#` のように `#` 記号を付けます。

## #SPILL!エラーの発生条件

#SPILL!エラーは以下のパターンで発生します。

### 1. スピル範囲に既存データがある
最も頻繁な原因。UNIQUE関数が10行返そうとした先に既にテキストや数値が入力されていると展開できません。

### 2. スピル範囲に結合セルが含まれる
Excelの結合セル(merged cells)はスピルと相性が悪く、結合セルが1つでも範囲内にあると即エラーになります。

### 3. テーブル(構造化テーブル)内で使用
Excelテーブル(Ctrl+T で作成する青いテーブル)の内部ではスピルが原則禁止です。テーブル外のセルで数式を組む必要があります。

### 4. ワークシートの端を超える
例えばSEQUENCE(1048576)のようにExcelの行数上限(1,048,576行)を超える配列を生成しようとすると#SPILL!になります。

### 5. メモリ不足
数百万件規模の配列を生成するとメモリエラーとしてSPILLが返されます。

### 6. スピル範囲が不確定
揮発性関数(RAND・OFFSET・INDIRECT等)を組み合わせて結果サイズが計算前に確定できない場合。

## エラーの種類と原因表示

#SPILL!エラーセルをクリックすると左側に黄色い警告アイコン「!」が表示され、以下の原因のいずれかが提示されます。

| 原因表示 | 意味 |
|———|——|
| スピル範囲が空ではありません | 既存データが障害 |
| 結合セルにスピルできません | 結合セルが障害 |
| テーブル内ではスピルできません | テーブル制限 |
| スピル範囲が大きすぎます | 行・列数の上限超過 |
| メモリ不足 | 配列が巨大すぎる |
| 認識できないか、フォールバックされました | その他の構造的問題 |
| スピル範囲が揮発性です | INDIRECT等の不確定参照 |

## 対処法

### 障害セルを特定する
警告アイコン「!」→「障害セルの選択」をクリックすると、Excelが自動で問題のセルにジャンプします。これが最も確実な特定方法です。

### 既存データを削除・移動
– スピル予定範囲のセルを範囲選択 → Delete
– 既存データを別シート・別範囲に移動
– スピル数式の入力位置を、空きセルの多い場所に変更

### 結合セルを解除
– 結合セルを選択 → ホームタブ → セルを結合して中央揃え(解除)
– ワークシート全体で結合セルを探す場合: Ctrl+F → オプション → 書式 → 配置 → 「セルを結合する」にチェック → すべて検索

### テーブルから外に出す
– テーブルを範囲に変換(テーブルデザイン → 範囲に変換)
– またはテーブル外の通常セルに数式を入力

### 数式の出力範囲を制限
– FILTER関数の引数で条件を絞り込み件数を減らす
– UNIQUE関数の前にCOUNTIFで重複数を確認

### 単一セルに収める(旧形式)
– 配列全体ではなく1つの値だけ欲しい場合: INDEX(UNIQUE(A1:A100),1) のように先頭1件を取得
– @ 演算子で暗黙の交差を使う: @UNIQUE(A1:A100)

## Excel 365 / 2021 / それ以前の違い

| バージョン | 動的配列 | #SPILL! | 配列数式(CSE) |
|———–|———|———|—————–|
| Excel 365 | 対応 | 発生する | 後方互換で利用可 |
| Excel 2021 | 対応 | 発生する | 後方互換で利用可 |
| Excel 2019 | 非対応 | 発生しない | Ctrl+Shift+Enter必須 |
| Excel 2016 | 非対応 | 発生しない | Ctrl+Shift+Enter必須 |
| Excel for Mac 2021 | 対応 | 発生する | 後方互換で利用可 |
| Excel for Web | 対応 | 発生する | 後方互換で利用可 |

Excel 2019以前のファイルをExcel 365で開くと、互換性確認で配列数式が自動変換されることがあります。

## UNIQUE・FILTER関数との関係

### UNIQUE関数
“`
=UNIQUE(A2:A100)
“`
A2:A100の重複を除いた一意リストを縦に展開。重複が多いほどコンパクトな配列、重複が少ないほど大きな配列を返すため、スピル先の確保が重要です。

### FILTER関数
“`
=FILTER(A2:C100, B2:B100="東京")
“`
B列が「東京」の行をA:C 3列でスピル。条件に一致する件数が0だと#CALC!、件数が多すぎて他データと衝突すると#SPILL!です。

### SORT・SORTBY関数
動的配列で並べ替えた結果を返すため、元データ件数分のスピル範囲が必要。

## ベストプラクティス

1. **スピル数式は新規シート・空き範囲で使う**: 既存データから離れた列で動作確認
2. **結合セルは避ける**: 業務シートで結合セルを使う場合は別シートに分離
3. **テーブルとスピルは併用しない**: テーブルは集計に、スピルは動的レポートに使い分け
4. **`#` 記号を活用**: `A2#` でスピル範囲全体を参照し、別の数式から扱う
5. **件数上限を意識**: SEQUENCE・RANDARRAYは大きな数を指定しない
6. **エラー処理を組み込む**: `=IFERROR(UNIQUE(A2:A100), "重複削除失敗")` で表示制御
7. **古いExcelとの共有時**: 動的配列を含むファイルは旧版で開くと配列が固定化される可能性あり、共有時は事前に互換性確認
8. **VBA・マクロとの相性**: VBAでスピル範囲を参照するときは `Range("A2").SpillingToRange` を使う

## #SPILL!と他のエラーの違い

| エラー | 主な原因 |
|——-|———|
| #SPILL! | 動的配列の展開先が確保できない |
| #VALUE! | 引数の型が不正 |
| #NAME? | 関数名のスペルミス |
| #REF! | 参照先が削除された |
| #DIV/0! | 0除算 |
| #N/A | 値が見つからない |
| #NUM! | 数値計算範囲外 |
| #CALC! | 配列計算の論理エラー(空配列等) |
| #NULL! | 範囲の指定が不正 |

#SPILL!は動的配列特有のため、Excel 2019以前のユーザーは遭遇しません。一方、Excel 365でファイルを開いた瞬間に大量発生することがあり、シート設計の見直しが必要になります。

具体的な場面

売上データのA列1000行から重複を除いた顧客名リストを作りたく、D2セルに =UNIQUE(A2:A1000) と入力したところ#SPILL!エラーが発生。エラーセルの「!」アイコンをクリックして「障害セルの選択」を選ぶと、D45セルに古い社内メモが残っていることが判明。D45の内容を別シートに退避してDeleteすると、D2に入力したUNIQUE数式が瞬時に展開され、D2:D87まで一意の顧客名87件がスピルした。さらにE2に =FILTER(B2:C1000, A2:A1000=D2#) と入力し、D2のスピル範囲を参照することで、各顧客の最新取引が動的に連動する仕組みを構築できた。

別の呼び方

SPILL
#SPILL!
スピル
スピルエラー
#SPILL
スピル!エラー
動的配列エラー
Spill Range

関連する用語

この用語に関する関連記事

Check Also

TP-Link Tapoカメラが接続できない・オフラインになる原因と解決法完全ガイド

【2026年最新版】TP-Link Tapoカメラが接続できない・オフラインになる原因と解決法完全ガイド

TP-LinkのTapo(タポ …