Google SheetsでSORT/UNIQUEが#REF!を返す原因と修正方法:配列結果がデータを上書きする問題

beginner📗 Google Sheets2026-05-22| Google Sheets(ウェブブラウザ、OS問わず)

Error Message

#REF! (Array result was not expanded because it would overwrite data in...)
#sort#unique#array-formula#spill-error#google-sheets

問題の概要

SORT()UNIQUE() の数式を入力してEnterを押したとき、並び替えられたリストの代わりに赤い #REF! が表示されることがあります。マウスオーバーすると以下のメッセージが表示されます:

Array result was not expanded because it would overwrite data in...

Google スプレッドシートの配列数式(SORTUNIQUEFILTERARRAYFORMULA)は、すべて隣接するセルに自動的に結果を「スピル(展開)」します。それらのセルのいずれかに何か(スペース1つやゼロでも)が含まれていると、スプレッドシートは処理を拒否して #REF! を返します。

エラーの原因

例えば、セルC2に =SORT(A2:A20) を入力したとします。スプレッドシートは19個の並び替えた値を書き込むために、C2:C20 が完全に空である必要があります。C5に不要なエントリ(ラベル、余った数値など何でも)があると、数式全体が機能しなくなります。

よくある原因:

  • スピル範囲内に別の数式や固定値が存在している。
  • スペース( )や先頭のアポストロフィ(')が含まれている — セルは空に見えるが実際は空ではない。
  • 同じ数式の以前の実行で残った値がクリアされていない。
  • 出力範囲内に結合セルがある — スプレッドシートは結合されたブロックには書き込めない。

簡単な修正方法:スピル範囲をクリアする

出力をブロックしているものを見つけて削除するだけです。

  • #REF! が表示されているセルをクリックします。
  • 青い枠のプレビューが表示されます — スプレッドシートが結果を書き込もうとしている場所を示しています。
  • 数式セル自体を除いて、青い枠の内側にあるすべてのセルを選択します。
  • Delete キーを押してセルの内容を消去します。
  • 数式が自動的に解決されます。

削除後もまだ機能しない場合は、ブロックしているセルに不可視文字が含まれている可能性があります。そのセルをクリックして数式バーを確認してください — アポストロフィ1つでも何か表示されていたら、Delete キーを再度押してきちんとクリアします。

結合セルへの対処

結合セルはスピル数式を静かに壊します。範囲が空に見えても、結合自体がブロックの原因になります。データをクリアしても解決しない場合は、結合セルを確認してください:

  • 意図した出力範囲全体を選択します。
  • 表示形式 → セルの結合 → 結合を解除 に移動します。
  • 再表示された内容を削除し、数式を再入力します。

恒久的な修正:数式専用の列を用意する

本質的な解決策は分離です。スピル数式は他に何も触れない専用の列に置いてください。動的な出力と静的なラベルを同じ列に混在させると、データが増えた瞬間にこのエラーが再発します。

問題のあるレイアウト — 数式と静的データがB列を共有している:

| A           | B                 |
|-------------|-------------------|
| Raw data    | =SORT(A2:A10)     |  ← B2:B10 にスピルしようとする
| more data   |                   |
| ...         | Header label      |  ← B5 がスピルをブロック!

正しいレイアウト — 数式がC列を専有している:

| A           | B (empty buffer) | C                 |
|-------------|-----------------|-------------------|
| Raw data    |                 | =SORT(A2:A10)     |
| more data   |                 |                   |
| ...         |                 |                   |

B列は視覚的なバッファとして機能します。過剰かもしれませんが、シートが大きくなるにつれて誤った重複を防ぐことができます。

安全策としてIFERRORで囲む

ソースデータのサイズが常に変化していて、スピル範囲のクリアを保証できない場合は、IFERROR で数式を囲むことで、他のユーザーに赤いエラーの代わりにメッセージを表示させることができます:

=IFERROR(SORT(A2:A100), "Output blocked — clear column C")

これは根本的な原因を修正するものではありません。レイアウトの競合を解決するまでの間、シートを見やすく保つだけです。

各数式に必要なスペース

以下の各数式は、入力したセルから下方向にスピルします。入力前に出力列全体をクリアしてください。

=SORT(A2:A50)                        ' 出力列に最大49行必要
=SORT(A2:A50, 1, FALSE)              ' 同じ範囲、降順
=UNIQUE(B2:B100)                     ' 最大99行(重複排除により減少する場合あり)
=SORT(UNIQUE(B2:B100))               ' 組み合わせ — それでも99行を想定する
=FILTER(A2:B50, C2:C50="active")     ' 行数は一致する件数による

UNIQUE の中に SORT をネストしてもスペースの必要量は減りません。ソース範囲の最大長で計算してください。

確認手順

ブロックしていたセルをクリアしたら:

  • #REF! のセルがすぐに更新され、並び替えまたは一意のリストの最初の値が表示されます。
  • 薄い青の枠がスピル範囲全体を囲みます — 数式が正常に機能していることを示します。
  • スピル範囲内(数式セル自体ではなく)のセルをクリックします。数式バーに数式がグレーで薄く表示されます。これはスピル結果であり、独立したエントリではないことを意味します。
  • ソース範囲に新しい値を追加して、出力が自動的に調整されることを確認します。

シートの別の場所を編集した後に #REF! が再表示される場合は、別の数式が大きくなって出力列に入り込んでいる可能性があります。Ctrl+End を押して最後に使用したセルにジャンプし、スピル範囲の近くにあるものを確認してください。

Related Error Notes