Excel での #スピル! error - ワークシートの端を越えて拡張します

適用先
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 では、lookup_valueに提供されるすべての値が考慮されます。 つまり、列全体が lookup_value 引数として指定されている場合、Excel は列内のすべての 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 に移動すると、正しく機能します。

この問題を解決するには、次の 3 つの簡単な方法があります。

# 方法 数式
1 関心のある参照値のみを参照します。 このスタイルの数式は 動的配列 を返しますが、 Excel テーブルでは機能しません。
=VLOOKUP(A2:A7,A:C,2,FALSE) を使用して、#SPILL が発生しない動的配列を返します。エラー。
=VLOOKUP(A2:A7,A:C,2,FALSE)
2 同じ行の値だけを参照し、数式を下にコピーします。 この従来の数式スタイルは テーブルで動作しますが、 動的配列は返されません。
従来の VLOOKUP は、単一の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 Tech Community の専門家にいつでも依頼したり、コミュニティでサポートを受けたりすることができます。

関連項目

FILTER 関数

RANDARRAY 関数

SEQUENCE 関数

SORT 関数

SORTBY 関数

UNIQUE 関数

Excel での #スピル! エラー

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

演算子の共通部分: @