昨日「ARRAYFORMULA関数を使って、7日毎の日付を並べたい」といったご相談がありました。
ARRAYFORMULA関数って?
聞きなれない関数名ですが、ARRAY(配列)FORMULA(計算)する関数で、記述の仕方によってはセルごとに関数をコピペしていた作業が0になります。
0calではありませんよ?
簡単な例
元々のC2セルの計算式が「=A2+B2」の式があったとき
C3セル以降も「=A3+B3」と式を展開する必要があります。
ARRAYFORMULA関数を使うと
C2セルに「ARRAYFORMULA(A2:A9+B2:B9)」と入力するだけで配列計算(範囲計算)をやってくれます。
便利&楽でしょう?
ARRAYFORMULAの注意点
配列を一気に処理してくれるARRAYFORMULAはとても便利なのですが、注意すべき点があります。それは「ARRAYFORMULA関数で展開したデータは自身を参照してはいけない」という点です。
基準セルをA1にしてA2セルの関数を「=ARRAYFORMULA(A1:A9+7)」と書けば展開されそうですが、A2セル以降はARRAYFORMULA関数自身によって書換&参照されるため循環参照エラーが発生します。
本題の飛び飛び日付
- 参照が重複しないこと
- 飛び飛びを別の表現をすること
これがクリアできればいいのでこんな関数に仕立てました。
「=ARRAYFORMULA(A1+ (ROW(A2:A9)-1) * 7)」
- A1…日付基準セル
- ROW(A2:A9)…行番号を返す関数ROW()を使用、上記式では2~9を返す。ここでARRAYFORMULAが生きてきます。
- -1…ROW(A2:A9)では2~9を返すため1~8への補正用
- *7…7日飛び
この結果がこちらです。
A1セルに基準日、A2セルに関数を入力しただけで7日おきの日付が展開されました。
事例に使ったスプレッドシートは下記リンク先にあります。コピーは自由です。ご自身の責任の範囲内でご利用ください。