Excel での #スピル! エラー - ワークシートの端を超えて拡張する

適用先
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for iPad Excel Web App Excel for iPhone Excel for Android タブレット Excel for Android スマートフォン

入力しようとしているスピル済み配列数式がワークシートの範囲を超えています。 より小さい範囲または配列でもう一度やり直してください。

次の例では、数式をセル F1 に移動するとエラーが解決され、数式は正しくスピルします。

#SPILL を示すスクリーンショット。エラー: セル F2 の =SORT(D:D) がブックの端を超えている場合。セル F1 に移動すると、正常に機能します。

一般的な原因: 完全な列参照

lookup_value 引数を過剰に指定して VLOOKUP 数式を作成するときによくある誤解が発生します。 動的配列に対応する Excel より前、Excel では、VLOOKUP が 1 つの値のみを想定していたため、Excel では同じ行の値のみが数式として考慮され、他の値は無視されていました。 動的配列の導入により、Excel はlookup_valueに提供されたすべての値を考慮します。 この変更により、列全体を lookup_value 引数として指定すると、列の値 1,048,576 すべてが検索されます。 完了した後、それらをグリッドにこぼそうとしますが、グリッドの端に達して #SPILL が発生する可能性が非常に高いです。 エラーを返します。  

たとえば、次の例のようにセル E2 に配置された場合、数式 =VLOOKUP(A:A,A:C,2,FALSE) は以前セル A2 の ID のみを検索していました。 ただし、動的配列 Excel では、数式は #SPILL! Excel は列全体を検索し、1,048,576 件の結果を返し、Excel グリッドの最後に到達するためです。

#SPILL を示すスクリーンショット。結果がワークシートの端を越えてスピルしてしまうため、セル E2 の =VLOOKUP(A:A,A:D,2,FALSE) でエラーが発生しました。数式をセル E1 に移動すると、正しく動作します。

この問題を解決するには、次のいずれかの方法を使用します。

# 方法 数式
1 目的の参照値のみを参照します。 このスタイルの数式は 動的配列 を返しますが、 Excel のテーブルでは機能しません。
= VLOOKUP(A2:A7,A:C,2,FALSE) を使用して、#SPILL にならない動的配列を返すことを示すスクリーンショット。エラー。
=VLOOKUP(A2:A7,A:C,2,FALSE)
2 同じ行の値だけを参照し、数式を下にコピーします。 この従来の数式スタイルは テーブルでは機能しますが、 動的配列は返されません。
従来の VLOOKUP を 1 つのlookup_value参照で使用することを示すスクリーンショット: =VLOOKUP(A2,A:C,32,FALSE)。この数式は動的配列を返しませんが、Excel のテーブルで使用できます。
=VLOOKUP(A2,A:C,2,FALSE)
3 @ 演算子を使用して共通部分を実行するように Excel に要求し、数式をコピーします。 このスタイルの数式は 表では機能しますが、 動的配列は返されません。
@ 演算子を使用して、=VLOOKUP(@A:A,A:C,2,FALSE) をコピーすることを示すスクリーンショット。この参照スタイルはテーブルでは機能しますが、動的配列は返されません。
=VLOOKUP(@A:A,A:C,2,FALSE)

補足説明

Excel 技術コミュニティの専門家にいつでも質問するか、コミュニティでサポートを受けることができます。

関連項目

FILTER 関数

RANDARRAY 関数

SEQUENCE 関数

SORT 関数

SORTBY 関数

UNIQUE 関数

#SPILL の修正方法! エラー

動的配列数式とスピル配列の動作

演算子の共通部分: @