GoogleSpreadSheet

Google Spreadsheetで行が追加になった場合に自動で日付を入力する数式

やりたいこと

下記のようなスプレッドシートのデータがあります。

日付 曜日 やること
2018/04/01 市場へ出かける
2018/04/02 お風呂をたく
2018/04/03 お風呂にはいる
2018/04/04 友達がくる
2018/04/05 送っていく

※スプレッドシート自体、6行目までしか存在しないものとします。

このとき、スプレッドシートの末尾に行追加をしたら、自動で日付(と曜日)が入るようにしたい。

日付 曜日 やること
2018/04/01 市場へ出かける
2018/04/02 お風呂をたく
2018/04/03 お風呂にはいる
2018/04/04 友達がくる
2018/04/05 送っていく
2018/04/06
2018/04/07

完成した数式(日付部分)

=ArrayFormula(date(2018,3,30)+row(A2:A))

説明

経緯

行を追加した時に自動で値が入るという挙動は、ARRAYFORMULAで実現するのが良いかなと思ったので、ARRAYFORMULAを使う方法から逆算して考えました。

いったんARRAYFORMULAを外して考える。

=date(2018,3,30)+row(A2)

2018年3月30日 date(2018,3,30) にA2セルの行番号row(A2)(=2)を足すので、「2018/04/01」になります。
date()に入れる日付は、数式を入力する行番号と、最初に表示したい日にちから適宜設定してください。

ARRAYFORMULAで列に展開

=ArrayFormula(date(2018,3,30)+row(A2:A))

A2列以降のA列row(A2:A)に対して、数式を適用します。

適用イメージ

  • A3セル=2018年3月30日+3(行目)=2018/04/02
  • A4セル=2018年3月30日+4(行目)=2018/04/03
  • A5セル=2018年3月30日+5(行目)=2018/04/04

(以降繰り返し)

補足

曜日部分は下記の通りです。

=ArrayFormula(text(WEEKDAY(A2:A,1),"ddd"))