ルールはシンプルです。空白であるべきセルは「本当に空白」にする。="" も =IF(x,"",y) も使わない。条件付きで表示を抑制したい場合は =IF(x, 値, NA()) を使い、参照側の数式を IFERROR でラップしてください。
複数タブにまたがるモデル--収益分析タブがSEQUENCEで期間ヘッダーを生成し、キャッシュフロータブがFILTERで取引ログから抽出しているような構成--では、各タブの下部にモデル監査行を設けて、SUMPRODUCT事前チェックをワイヤリングしておくと安心です。ゼロ以外になったら赤くなる条件付き書式と組み合わせてください。
-- 各タブのモデル監査行に追加する
=SUMPRODUCT(--(NOT(ISBLANK('収益分析'!C4:C343))))
ModelMonkeyをワークフローに組み込んでいる場合、範囲への書き込み前にセルのチェックが自動で実行されます。空白でないセルがあれば、書き込み実行前にフラグが立ちます。="" の問題を、月次ボードパックの朝に発覚するのではなく、発生するその瞬間に検知できます。
Excelの構造化テーブル内でのスピル制限について詳しくは、Excelテーブルでのスピル配列数式の制限について をご覧ください。
よくある質問
Q. #SPILL! エラーが出ているのに、出力範囲のセルは何も表示されていません。なぜですか?
A. ="" を返す数式が入っているセルは、画面上は空白に見えますが ISBLANK() がFALSEを返します。Excelはこのセルを「データあり」と判断してスピルを停止します。対象セルに =ISBLANK(セル参照) を入力して確認し、FALSEなら数式ごと削除するか =NA() に置き換えてください。
Q. 他のシステムからデータをコピーした後に #SPILL! が発生しました。どう対処すればいいですか?
A. SAP・Workday・OracleなどのシステムからコピーしたデータにはUnicode 160(改行なしスペース)が混入していることがあります。ホーム → 検索と置換 を開き、検索ボックスにAlt+テンキー「0160」で入力し、置換後の文字列を空欄にして「すべて置換」を実行してください。それでも解消しない場合は、=LEN(セル参照) で長さを確認します。0より大きければ何らかの不可視文字が残っています。
Q. #SPILL! エラーの原因となっているセルを素早く見つけるには?
A. エラーのあるセルをクリックすると青い点線の枠が表示されます。次に F5 → セル選択 → 空白セル を実行してください。選択されなかったセルがブロック原因です。10秒以内に特定できます。
Q. 結合セルを解除せずに #SPILL! を回避する方法はありますか?
A. ありません。ダイナミック配列のスピルパス上に結合セルが1つでも存在すると、Excelはその結合全体をブロッカーとみなします。結合を解除してから、中央揃えを手動で再設定するのが唯一の解決策です。
Q. Google Sheetsでも同じエラーが起きますか?
A. 同じ現象が起きますが、エラーコードが異なります。Google Sheetsでは #SPILL! ではなく #REF! が表示され、「配列の結果は展開されませんでした」というメッセージが出ます。原因と診断方法(ISBLANK・SUMPRODUCT)はExcelとまったく同じです。