Home / Microsoft / Excel / 【2026年最新版】Excelのスピル(動的配列)が動かない・エラーになる原因と対処法【完全ガイド】

【2026年最新版】Excelのスピル(動的配列)が動かない・エラーになる原因と対処法【完全ガイド】

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

ExcelでSEQUENCE関数やFILTER関数、SORT関数を入力したのに結果が1つしか表示されない、または#SPILL!エラーが出て困っている方は多いはずです。これらは「動的配列関数」と呼ばれる機能で、使いこなせれば作業効率が劇的に上がります。しかし、バージョンや設定によっては正しく動作しないケースがあります。

この記事では、Excelの動的配列(スピル)が機能しない原因と、今すぐ試せる対処法を体系的に解説します。#SPILL!エラーの種類別の原因・対処法もすべてカバーしているので、ぜひ最後まで読んで問題を解決してください。

excel-dynamic-array-not-working-fix 手順1

この記事でわかること

  • 動的配列(スピル)機能が使える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ステップ:動的配列が機能しないときの解決手順

excel-dynamic-array-not-working-fix 手順2

ステップ1:Excelのバージョンが対応しているか確認する

まず大前提として、使っているExcelが動的配列に対応しているか確認します。

  1. Excelを開いて「ファイル」タブをクリックする
  2. 左メニューの「アカウント」をクリックする
  3. Excelのバージョン情報」ボタンをクリックする
  4. 表示されたバージョン番号を確認する

確認ポイント:

  • Microsoft 365(バージョン2002以降)→ 対応
  • Excel 2021 → 対応
  • Excel 2019 → 非対応(#NAME?エラーになる)
  • Excel 2016以前 → 非対応

バージョンが古い場合は、ステップ2以降の対処法は効果がありません。Microsoft 365へのアップグレードを検討してください。

ステップ2:スピル範囲に何かが入っていないか確認・削除する

#SPILL!エラーで最も多い原因が「スピル範囲が空白でない」です。数式を入力したセルの右側・下側のセルに、見えないスペースや改行が入っていることがあります。

  1. #SPILL!エラーが出ているセルをクリックする
  2. セルの右に表示される「!(感嘆符)」アイコンをクリックする
  3. スピル範囲が空白でない」と表示されたら、「セルの選択をブロック」をクリックする
  4. 青くハイライトされたセル(ブロックしているセル)を確認する
  5. そのセルを選択し、Deleteキーを押してクリアする

注意:目視では空白に見えても、スペース(半角・全角)や改行コードが入っているケースがあります。確実に削除するには、スピル先になる範囲をすべて選択してDeleteキーを押してください。

ステップ3:結合セルを解除する

スピルの展開先に結合セルがあると、#SPILL!エラーが発生します。Excelの動的配列は結合セルに展開できません。

  1. エラーの「!」アイコンから「セルの選択をブロック」でブロックセルを特定する
  2. 結合セルが含まれている場合、その範囲を選択する
  3. ホーム」タブ → 「配置」グループ → 「セルを結合して中央揃え」の▼をクリック
  4. セル結合の解除」をクリックする

結合セルはデザイン目的で使われることが多いですが、動的配列関数を使うシートでは極力避けることをお勧めします。

ステップ4:Excelテーブル(ListObject)の外に数式を移動する

Excelテーブル(「挿入」→「テーブル」で作成した青い縞模様のテーブル)の中に動的配列数式を入力すると、「スピル範囲がテーブル内にある」というエラーが発生します。これはExcelの仕様上の制約です。

解決策1:数式をテーブルの外のセルに移動する

  1. テーブルの外(テーブルと被らない場所)の空白セルをクリックする
  2. そこに動的配列数式を入力しなおす

解決策2:テーブルを通常の範囲に変換する

  1. テーブル内のセルをクリックする
  2. テーブルデザイン」タブ(またはテーブルツール)を開く
  3. 範囲に変換」をクリックする
  4. 確認ダイアログで「はい」をクリックする

テーブルを範囲に変換すると、テーブル固有の機能(フィルターや自動拡張)は失われますが、スピルが正常に機能するようになります。

ステップ5:互換性モード(.xls形式)を解除する

ファイルを旧形式(.xls)で保存している場合、Excelはタイトルバーに「互換性モード」と表示し、新機能を無効にすることがあります。この状態では動的配列関数が正しく機能しません。

  1. タイトルバーに「互換性モード」と表示されているか確認する
  2. 表示されている場合は「ファイル」タブをクリックする
  3. 情報」をクリックする
  4. 変換」ボタンをクリックする(.xlsx形式に変換される)
  5. 保存先と名前を確認して保存する

または、「ファイル」→「名前を付けて保存」で、ファイルの種類を「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で入力していました(波括弧 {} で囲まれた数式)。これは動的配列のスピルとは別の仕組みです。既存の旧配列数式が動的配列関数と混在していると、予期しない動作を引き起こすことがあります。

旧配列数式の確認方法:

  1. 数式バーに {=...} のように波括弧で囲まれた数式が表示されていたら旧配列数式
  2. その数式を通常の動的配列数式に書き直す

変換例:

旧: {=SUM(IF(A2:A100="東京", B2:B100, 0))}  ← Ctrl+Shift+Enterで入力
新: =SUMIF(A2:A100,"東京",B2:B100)          ← または FILTER で書き直す

ステップ8:Excelを最新バージョンに更新する

Microsoft 365のExcelは定期的にアップデートされ、バグ修正や機能改善が行われます。古いバージョンのまま使い続けていると、動的配列関連のバグが残っている可能性があります。

  1. ファイル」タブをクリックする
  2. アカウント」をクリックする
  3. 更新オプション」をクリックする
  4. 今すぐ更新」をクリックする
  5. 更新が完了したらExcelを再起動する

更新後も問題が続く場合は、Excelを完全に終了して再起動する(Ctrl+Alt+Delete → タスクマネージャーからExcelプロセスを完全終了)か、PCを再起動してみてください。

動的配列が「見えているのに計算されない」場合の追加チェック

#SPILL!エラーではなく、数式を入力しても結果が1つのセルにしか表示されない(スピルしない)場合、以下を確認してください。

自動計算が無効になっていないか確認する

  1. 数式」タブ → 「計算方法の設定」をクリックする
  2. 自動」にチェックが入っているか確認する
  3. 「手動」になっていた場合は「自動」に変更し、F9キーを押して再計算する

数式がテキストとして入力されていないか確認する

セルの書式が「文字列」に設定されていると、数式がそのままテキストとして表示されます。

  1. 対象セルを選択し、「ホーム」タブ → 「数値」グループの書式を確認する
  2. 「文字列」になっていたら「標準」または「数値」に変更する
  3. セルをダブルクリックして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を最新バージョンにアップデートするだけで解決するケースもある

Check Also

Excelマクロ自動実行されない対処法

【2026年最新版】Excelのマクロが自動実行されない・エラーになる原因と対処法【完全ガイド】

【2026年最新版】Excel …