ARRAYFORMULAの結果が下へ展開されない場合、展開先セルに値が残っている、結合セルがある、または数式が単一セル相当になっている可能性があります。まず結果が広がる予定の範囲を確認します。

展開先セルの占有状態を調べる

  • 式を入れたセルのすぐ下に空白に見えるスペース・数式がないか確認します。
  • 複数セルにまたがる結合が展開先にないか調べます。
  • ARRAYFORMULAの内側に固定セルだけを参照する式を入れていないか確認します。
  • 期待する出力件数が入力範囲と合っているか確かめます。

ARRAYFORMULAの展開場所を空ける

  1. 元表のコピーに検証用シートを作ります。
  2. A2:A6に小さなサンプルを置き、B2で =ARRAYFORMULA(IF(A2:A6="","",A2:A6*2)) のように範囲演算を試します。
  3. 結果を置くB3:B6は空けておき、邪魔している入力がある場合は移動・保存します。
  4. 動いたら元の式の範囲・参照の絶対/相対・空欄処理を見直します。
  5. 広い範囲へ戻す前に、不要な空行まで大量出力していないか確認します。

既存データの上書きを避ける

  • 元の手入力データが結果範囲にある場合は削除前に退避してください。
  • ARRAYFORMULAを付ければすべての関数が期待どおり配列化するわけではありません。
  • 配列数式は多数の結果を作るので、既存表の途中に置かない方が安全です。

新しい行が自動計算されるか試す

  • 入力3件に対して結果3件が出るか手計算と照合します。
  • 入力行を追加したときに意図どおり結果が増えるか、将来の範囲設計を確認します。

正しい「複数行を返す式」か検査する

A2:A5に 10 / 空欄 / 20 / 30 が入っている例で、B2に =ARRAYFORMULA(IF(A2:A5="","",A2:A5*2)) を置くと、意図する結果はB2:B5に 20 / 空欄 / 40 / 60 が並ぶことです。B3:B5に入力値や別の数式が残っていると、結果を展開する場所がありません。消す前に既存セルの内容をコピーへ退避し、必要なら数式の出力先を別列へ移します。

もう一つの問題は、内側が単一セルを返す式になっているケースです。 =ARRAYFORMULA(A2*2) のようにA2だけ参照していても、下行に自動計算結果が増えるわけではありません。A2:A5のような範囲に式を変更するか、通常のセル式で足りるならARRAYFORMULAを使わない設計へ戻します。

どこまで展開するか先に決める

A2:A という列末尾までの参照は、空欄行を含む非常に広い範囲を扱います。大型シートで不要な計算を増やさないよう、データ増加に応じた範囲管理を行ってください。Googleの公式ヘルプによれば、多くの配列数式はARRAYFORMULAを明示的に付けなくても展開します。関数の追加そのものを解決策と決めつけず、期待する結果行数と出力場所を確認します。

参考資料

おすすめの記事