Googleスプレッドシートには、Arrayformulaという便利な関数がある。Excelには存在しない関数で、使いたい関数をArrayformulaでコーティングして1行目に入れるとコピペのごとく下まで勝手に表示してくれる関数。実際に関数が入っているのは1行目だけなので、スプレッドシートの軽量化とコピペ忘れを防げるメリットも大きい。
これが我が家の家計簿。月が変わると日付を入力し直している。 実際に入力しているのは月初1日だけで、あとはプルダウンでコピペしているものの、A1セルだけ変えたら全部変わると良いなと思うわけで。
事前準備
A2セルからA32セルまで削除。このセルに何かが入力されていると関数がエラーになるため削除が必要。 そして、A2セルにArrayformulaを使った数式を入力すればOK。
まずは練習として1から10までの連番を振ってみる
ROW(A1:A10)が導き出すものは各行の行番号。 ここでは1から10が表示される。
じゃあ数字を日付にしてみよう
Arrayformula関数では「配列」を指定する必要あり。 配列に馴染みがないとなんのことやらですが、ひとつのセルに入力する関数で他のセルまで一括入力ができるということは、「始点と終点を指定することが必要」とまずは覚えておくとOK。
始点を1月1日、終点を10日後の1月10日に設定。 始点の指定はA1セル、終点の指定は、先ほど連番で利用したROW関数を利用して1日ずつ足していく。 *最後に-1しているのは、1月1日に1を足すと1月2日になってしまうので戻すために-1している。
ということは、ROW(A1:A31)にすれば、月末まで表示されるよね。
しかし、31日ない月はどうする?しかも2月は28日とか29日とか
IF文を入れてあげればOK。
当月末までならこの数式の結果を表示、そうでない場合は空白表示 A1+ROW(A1;A31)-1(1/1から+31日間)が EOMONTH(A1,0)+1(1/1の0ヶ月後の月末は1/31、それに+1して2/1) より小さければ(2/1より小さい→1/31までなら) A1+ROW(A1;A31)-1(1/1から+31日間)を表示する そうでなければ空欄で表示する
2月だとこんな感じ。A1セルの日付を変えればA2セル以降は連動。