【テクニック】ARRAYFORMULA関数を好きな行数空けて展開する方法

こんにちは、スプレッドシート大好きなたぬ(@tanuhack)です!

ARRAYFORMULA関数と言えば、配列数式を用いて自分が指定したセルの範囲内に計算結果を自動挿入する関数として利用されています。

▼ARRAYFORMULA関数のおさらいはコチラの記事からどうぞ
スプレッドシートの『ARRAYFORMULA』関数を使って表示速度を高速化させよう!

例えば、ARRAYFORMULAの範囲をA1セルからA100セルに指定した場合、A1セルからA100セルまでビッシリ、計算結果が挿入されてしまいます。

A1セルからA100セルまで、行番号を自動挿入する数式
=ArrayFormula((ROW(A1:A100)))

arrayformula-space1

今回は、ARRAYFORMULA関数を好きな数行空けて展開するプチテクニックを紹介します。

1行空けて計算結果を展開する

先程の関数を例に紹介します。

A1セルからA100セルまで、行番号を自動挿入する数式
=ArrayFormula((ROW(A1:A100)))

結論から言うと、数行飛ばしのテクニックは、ARRAYFORMULAとIF関数を組み合わせで実現することができます。

奇数行だけ計算結果を展開する

arrayformula-space2

ISODD関数を使います。

ISODD関数
=ISODD(x)
xが奇数ならTRUEを返す
A1セルからA100セルまで、奇数行なら行番号を自動挿入する数式
=ArrayFormula(IF(ISODD(ROW(A1:A100)),ROW(A1:A100),""))

偶数行だけ計算結果を展開する

arrayformula-space3

ISEVEN関数を使います。

ISEVEN関数
=ISEVEN(x)
xが偶数ならTRUEを返す
A1セルからA100セルまで、偶数行なら行番号を自動挿入する数式
=ArrayFormula(IF(ISEVEN(ROW(A1:A100)),ROW(A1:A100),""))

好きな倍数空けて計算結果を展開する

剰余を計算するMOD関数を使います。

MOD関数
=MOD(x,y)
xをyで割った余りを返す。

つまり、何かの倍数を求めたいなら、x/yの余りが0になれば良いということになりますね。

A1セルからA100セルまで、5の倍数なら行番号を自動挿入する数式
=ArrayFormula(IF(MOD(ROW(A1:A100),5)=0,ROW(A1:A100),""))
arrayformula-space4
A1セルからA100セルまで、5の倍数なら行番号を自動挿入する

逆に、5の倍数以外に計算結果を実行させたい場合は、逆集合の『<>』を使います。

A1セルからA100セルまで、5の倍数以外なら行番号を自動挿入する数式
=ArrayFormula(IF(MOD(ROW(A1:A100),5)<>0,ROW(A1:A100),""))
arrayformula-space5
A1セルからA100セルまで、5の倍数以外なら行番号を自動挿入する

このテクニックの注意点

1つだけ注意すべきことがあります。

今回紹介したテクニックは、IF関数を使って、条件式を満たさないものは空白で表示させているに過ぎません。

つまり、計算の途中に何かしら文字や数字を入力した場合、エラーを返します。

arrayformula-space6

さいごに

今回は、ARRAYFORMULA関数を好きな行数空けて計算結果を展開させる方法を紹介しました。

なかなかクセが強いARRAYFORMULAですが、その分こんな感じのテクニックが数多く存在します。

またどこかでお会いしましょう。