※本ページにはプロモーション(広告)が含まれています
ExcelでSEQUENCE関数やFILTER関数、SORT関数を入力したのに結果が1つしか表示されない、または#SPILL!エラーが出て困っている方は多いはずです。これらは「動的配列関数」と呼ばれる機能で、使いこなせれば作業効率が劇的に上がります。しかし、バージョンや設定によっては正しく動作しないケースがあります。
この記事では、Excelの動的配列(スピル)が機能しない原因と、今すぐ試せる対処法を体系的に解説します。#SPILL!エラーの種類別の原因・対処法もすべてカバーしているので、ぜひ最後まで読んで問題を解決してください。

この記事でわかること
- 動的配列(スピル)機能が使えるExcelのバージョン
- #SPILL!エラーが出る原因(種類別の一覧)
- 動的配列が機能しないときの具体的な対処法(8ステップ)
- 互換性モード・旧形式ファイルとの関係
- よくある疑問へのQ&A
動的配列(スピル)とは?対応バージョンを確認しよう
動的配列(Dynamic Array)とは、数式を1つのセルに入力するだけで、結果が自動的に隣接する複数のセルへ「あふれ出す(スピル:Spill)」機能です。2018年以降にMicrosoftが導入した機能で、以前は配列数式(Ctrl+Shift+Enter)を使わなければできなかった操作が、Enterキー1つで完結するようになりました。
スピル対応のExcelバージョン一覧
| バージョン / プラン | 動的配列対応 | 備考 |
|---|---|---|
| Microsoft 365(サブスクリプション) | ✅ 対応 | 最新機能が随時追加される |
| Excel 2021(永続ライセンス) | ✅ 対応 | 購入時点の機能のみ |
| Excel 2019(永続ライセンス) | ❌ 非対応 | #NAME?エラーになる |
| Excel 2016(永続ライセンス) | ❌ 非対応 | 関数自体を認識しない |
| Excel for Mac(Microsoft 365) | ✅ 対応 | バージョン16.33以降 |
| Excel Online(Web版) | ✅ 対応 | 一部関数は未対応の場合あり |
| Excel Mobile(スマートフォン) | ⚠️ 一部対応 | 表示のみ可能、入力不可の場合あり |
まず最初にやること:Excelを開いて「ファイル」→「アカウント」→「Excelのバージョン情報」でバージョンを確認してください。Excel 2019以前の場合は、動的配列関数そのものが使えないため、Microsoft 365へのアップグレードが必要です。
動的配列対応の主な関数
| 関数名 | 主な用途 | 使用例 |
|---|---|---|
| SEQUENCE | 連続する数列を生成 | =SEQUENCE(10) |
| FILTER | 条件に合うデータを抽出 | =FILTER(A:B,C:C=”東京”) |
| SORT | データを並べ替え | =SORT(A2:B10,2,-1) |
| SORTBY | 別の列を基準に並べ替え | =SORTBY(A2:A10,B2:B10) |
| UNIQUE | 重複しない値を抽出 | =UNIQUE(A2:A100) |
| RANDARRAY | ランダムな数値の配列を生成 | =RANDARRAY(5,3) |
| XLOOKUP | 高機能な検索・参照 | =XLOOKUP(A2,D:D,E:E) |
#SPILL!エラーの原因一覧(種類別まとめ)
#SPILL!エラーは「スピル範囲にデータが存在していて、結果を展開できない」ことを示します。しかし、原因は1種類ではありません。Excelはエラーをクリックすると「このエラーについて」のドロップダウンが表示され、より詳しい原因が確認できます。
| エラーの詳細メッセージ | 原因 | 対処法の概要 |
|---|---|---|
| スピル範囲が空白でない | 展開先のセルに既存データまたはスペースがある | スピル範囲のセルを削除またはクリア |
| スピル範囲が認識できない | スピル後のサイズが不明(RAND等を含む場合) | 動的サイズになる数式の組み合わせを見直す |
| スピル範囲がテーブル内にある | 数式がExcelテーブル(ListObject)内にある | テーブルを通常の範囲に変換する |
| スピル範囲が結合セルにある | 展開先に結合セルが含まれている | 結合セルを解除する |
| スピル範囲がワークシートの境界を超えている | 結果が1,048,576行または16,384列を超える | データ量を減らすか、数式の引数を調整する |
| メモリ不足 | 配列が大きすぎてメモリを確保できない | 不要なファイルを閉じる、PC再起動 |
対処法8ステップ:動的配列が機能しないときの解決手順

ステップ1:Excelのバージョンが対応しているか確認する
まず大前提として、使っているExcelが動的配列に対応しているか確認します。
- Excelを開いて「ファイル」タブをクリックする
- 左メニューの「アカウント」をクリックする
- 「Excelのバージョン情報」ボタンをクリックする
- 表示されたバージョン番号を確認する
確認ポイント:
- Microsoft 365(バージョン2002以降)→ 対応
- Excel 2021 → 対応
- Excel 2019 → 非対応(#NAME?エラーになる)
- Excel 2016以前 → 非対応
バージョンが古い場合は、ステップ2以降の対処法は効果がありません。Microsoft 365へのアップグレードを検討してください。
ステップ2:スピル範囲に何かが入っていないか確認・削除する
#SPILL!エラーで最も多い原因が「スピル範囲が空白でない」です。数式を入力したセルの右側・下側のセルに、見えないスペースや改行が入っていることがあります。
- #SPILL!エラーが出ているセルをクリックする
- セルの右に表示される「!(感嘆符)」アイコンをクリックする
- 「スピル範囲が空白でない」と表示されたら、「セルの選択をブロック」をクリックする
- 青くハイライトされたセル(ブロックしているセル)を確認する
- そのセルを選択し、Deleteキーを押してクリアする
注意:目視では空白に見えても、スペース(半角・全角)や改行コードが入っているケースがあります。確実に削除するには、スピル先になる範囲をすべて選択してDeleteキーを押してください。
ステップ3:結合セルを解除する
スピルの展開先に結合セルがあると、#SPILL!エラーが発生します。Excelの動的配列は結合セルに展開できません。
- エラーの「!」アイコンから「セルの選択をブロック」でブロックセルを特定する
- 結合セルが含まれている場合、その範囲を選択する
- 「ホーム」タブ → 「配置」グループ → 「セルを結合して中央揃え」の▼をクリック
- 「セル結合の解除」をクリックする
結合セルはデザイン目的で使われることが多いですが、動的配列関数を使うシートでは極力避けることをお勧めします。
ステップ4:Excelテーブル(ListObject)の外に数式を移動する
Excelテーブル(「挿入」→「テーブル」で作成した青い縞模様のテーブル)の中に動的配列数式を入力すると、「スピル範囲がテーブル内にある」というエラーが発生します。これはExcelの仕様上の制約です。
解決策1:数式をテーブルの外のセルに移動する
- テーブルの外(テーブルと被らない場所)の空白セルをクリックする
- そこに動的配列数式を入力しなおす
解決策2:テーブルを通常の範囲に変換する
- テーブル内のセルをクリックする
- 「テーブルデザイン」タブ(またはテーブルツール)を開く
- 「範囲に変換」をクリックする
- 確認ダイアログで「はい」をクリックする
テーブルを範囲に変換すると、テーブル固有の機能(フィルターや自動拡張)は失われますが、スピルが正常に機能するようになります。
ステップ5:互換性モード(.xls形式)を解除する
ファイルを旧形式(.xls)で保存している場合、Excelはタイトルバーに「互換性モード」と表示し、新機能を無効にすることがあります。この状態では動的配列関数が正しく機能しません。
- タイトルバーに「互換性モード」と表示されているか確認する
- 表示されている場合は「ファイル」タブをクリックする
- 「情報」をクリックする
- 「変換」ボタンをクリックする(.xlsx形式に変換される)
- 保存先と名前を確認して保存する
または、「ファイル」→「名前を付けて保存」で、ファイルの種類を「Excelブック(*.xlsx)」に変更して保存する方法でも解決できます。
ステップ6:スピルの展開範囲を明示的に制限する
スピルが予期しない範囲まで広がってしまう場合や、他のデータと干渉する場合は、数式側で出力範囲を制限するのも有効です。
例:SEQUENCE関数で行数を制限する
=SEQUENCE(10,1,1,1) ← 10行1列、1から始まり1ずつ増加
例:FILTER関数の結果を特定の列だけに絞る
=FILTER(A2:B100, C2:C100="東京") ← AとBの2列のみ返す
また、スピル範囲を他の数式で参照する際は「#演算子」を使うと便利です。例えば、A1に入力したSEQUENCE関数のスピル範囲全体を参照する場合は =A1# と書きます。
ステップ7:旧形式の配列数式(Ctrl+Shift+Enter)を変換する
以前のExcelでは、配列数式をCtrl+Shift+Enterで入力していました(波括弧 {} で囲まれた数式)。これは動的配列のスピルとは別の仕組みです。既存の旧配列数式が動的配列関数と混在していると、予期しない動作を引き起こすことがあります。
旧配列数式の確認方法:
- 数式バーに
{=...}のように波括弧で囲まれた数式が表示されていたら旧配列数式 - その数式を通常の動的配列数式に書き直す
変換例:
旧: {=SUM(IF(A2:A100="東京", B2:B100, 0))} ← Ctrl+Shift+Enterで入力
新: =SUMIF(A2:A100,"東京",B2:B100) ← または FILTER で書き直す
ステップ8:Excelを最新バージョンに更新する
Microsoft 365のExcelは定期的にアップデートされ、バグ修正や機能改善が行われます。古いバージョンのまま使い続けていると、動的配列関連のバグが残っている可能性があります。
- 「ファイル」タブをクリックする
- 「アカウント」をクリックする
- 「更新オプション」をクリックする
- 「今すぐ更新」をクリックする
- 更新が完了したらExcelを再起動する
更新後も問題が続く場合は、Excelを完全に終了して再起動する(Ctrl+Alt+Delete → タスクマネージャーからExcelプロセスを完全終了)か、PCを再起動してみてください。
動的配列が「見えているのに計算されない」場合の追加チェック
#SPILL!エラーではなく、数式を入力しても結果が1つのセルにしか表示されない(スピルしない)場合、以下を確認してください。
自動計算が無効になっていないか確認する
- 「数式」タブ → 「計算方法の設定」をクリックする
- 「自動」にチェックが入っているか確認する
- 「手動」になっていた場合は「自動」に変更し、F9キーを押して再計算する
数式がテキストとして入力されていないか確認する
セルの書式が「文字列」に設定されていると、数式がそのままテキストとして表示されます。
- 対象セルを選択し、「ホーム」タブ → 「数値」グループの書式を確認する
- 「文字列」になっていたら「標準」または「数値」に変更する
- セルをダブルクリックしてEnterを押し直す
よくある質問(FAQ)

Q1. FILTER関数を入力すると#NAMEエラーになります。なぜですか?
A. FILTER関数はExcel 2019以前では使えません。#NAME?エラーは「この関数名を認識できない」という意味です。ご使用のExcelがMicrosoft 365またはExcel 2021以降であるかを確認してください。それ以前のバージョンでは、FILTER関数の代わりにIF関数とCTRL+SHIFT+ENTERの旧配列数式、またはVBA(マクロ)を使って同等の処理を実現する必要があります。
Q2. #SPILL!エラーのセルの「!」アイコンを押しても「セルの選択をブロック」が選択できません。
A. エラーの詳細メッセージによって、表示されるオプションが変わります。「スピル範囲がテーブル内にある」「スピル範囲が認識できない」「スピル範囲が境界を超えている」などの場合は、「セルの選択をブロック」ではなく別のメッセージが表示されます。それぞれの詳細メッセージに合わせて、本記事のステップ3〜6の対処法を試してください。
Q3. スピルした結果のセルを個別に編集できますか?
A. いいえ、スピルした結果のセル(薄い青い枠で囲まれたセル)は個別に編集できません。編集できるのは数式を入力した先頭セルだけです。スピル範囲の個々のセルを選択してDeleteキーを押そうとしても削除できず、先頭の数式セルが選択されます。個別の値を変更したい場合は、スピル範囲全体をコピーして「値として貼り付け」を行ってから編集してください。
Q4. #演算子(スピル範囲演算子)とは何ですか?
A. #演算子は、動的配列のスピル範囲全体を参照するための特別な演算子です。例えばA1セルにSEQUENCE関数が入っており、A1:A10にスピルしているとき、=SUM(A1#) と書けばA1:A10の合計を自動的に計算します。スピルの範囲が変わっても自動で追従するため、非常に便利です。SORT(FILTER(…)) のような数式を組み合わせる際にもよく使われます。
Q5. 動的配列を含むファイルを古いExcelを使っている同僚に送ったらどうなりますか?
A. Excel 2019以前の環境でファイルを開くと、動的配列数式は通常の配列数式(波括弧 {} で囲まれた形式)として表示されますが、スピルは起こらず1つの値しか返しません。また、相手が保存して戻ってきたファイルを再度開くと、元の動的配列数式が変換されている場合があります。共有ファイルに動的配列を使う場合は、全員がMicrosoft 365かExcel 2021以降を使っているか確認することをお勧めします。
Q6. SORT関数で並べ替えてもデータが変わりません。なぜですか?
A. SORT関数は元のデータを並べ替えるのではなく、並べ替えた結果をスピルで別の場所に表示する関数です。元のデータ(参照元の範囲)は変更されません。これは仕様通りの動作です。元のデータを直接並べ替えたい場合は、「データ」タブの「並べ替え」機能を使ってください。SORT関数の結果を元データの場所に戻したい場合は、結果をコピーして「値として貼り付け」してから元データを上書きする方法があります。
Q7. スピル範囲がある行を行削除すると数式はどうなりますか?
A. スピル先の行(先頭セルではないスピル展開先の行)を削除すると、#SPILL!エラーが発生する場合があります。スピルが必要な行数分の空白スペースが確保できなくなるためです。また、先頭セル(数式が入っているセル)がある行を削除すると、当然数式ごと削除されます。行削除を行う際は、スピル範囲を意識して操作してください。
Q8. ExcelのMac版でも動的配列は使えますか?
A. はい、Excel for Mac(Microsoft 365)バージョン16.33以降では動的配列が利用できます。Macの場合も「ファイル」→「ヘルプ」→「Excelのバージョン情報」でバージョンを確認できます。バージョンが古い場合はMicrosoft AutoUpdateで更新してください。なお、Mac版はWindows版と比べて一部機能の追加が遅れる場合があります。
まとめ
Excelの動的配列(スピル)が機能しない場合や#SPILL!エラーが出る場合の原因と対処法を解説しました。最後に要点を整理します。
| 問題の種類 | 主な原因 | 対処法 |
|---|---|---|
| #NAME?エラー | Excelバージョンが非対応 | Microsoft 365またはExcel 2021以降にアップグレード |
| #SPILL!(範囲が空白でない) | 展開先にデータまたはスペースがある | スピル先範囲をDeleteキーでクリア |
| #SPILL!(テーブル内) | Excelテーブル内に数式がある | テーブル外に移動またはテーブルを範囲に変換 |
| #SPILL!(結合セル) | 展開先に結合セルがある | 結合セルを解除する |
| スピルが起こらない | 互換性モード(旧形式ファイル) | .xlsx形式に変換して保存 |
| 数式がそのまま表示される | セル書式が「文字列」になっている | 書式を「標準」に変更してEnter押し直し |
動的配列は一度使いこなすと、従来のVLOOKUPやIF関数の複雑な組み合わせが劇的にシンプルになります。特にFILTER・SORT・UNIQUEの組み合わせは、データ集計や分析業務の効率を大幅に向上させます。
問題が解決しない場合は、まずExcelのバージョン確認とスピル範囲の障害物の確認から始めてみてください。ほとんどのケースはこの2つで解決できます。
この記事のポイントまとめ
- 動的配列(スピル)が使えるのはMicrosoft 365またはExcel 2021以降のみ
- #SPILL!エラーの最多原因はスピル先のセルにデータやスペースがあること
- Excelテーブル内では動的配列数式は使えない(テーブル外に移動して解決)
- 結合セルがスピル先にある場合は結合を解除する必要がある
- 旧形式(.xls)での保存は動的配列を妨げる。.xlsx形式に変換して解決
- Excelを最新バージョンにアップデートするだけで解決するケースもある
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!