スプレッドシートで日付の関数を使用すると、
便利に使うことができるようになります。
この記事では、GASを使用せずに関数のみで日付を表示させる方法を書いています。
関数ではなく、GASを使いたい場合や、
チェックボックスで日付を自動表示させたい場合はこちら
【GAS】スプレッドシートで日付を自動で入力!日付更新・曜日自動サンプル【Google Apps Script】
この記事で解説している関数
TODAY()
YEAR()
MONTH()
DAY()
EDATE()
EOMONTH()
DATE()
スプレッドシートの日付関数
本日の日付
本日の日付はTODAY関数を使用します。
TODAY()
システム(PC)の日付を返す関数です。
TODAY関数は、時刻を含まない現在の日付を返します。
時刻を含めた日付の取得は、NOW関数を使用します。
NOW()
○日後の日付を表示
基準日から◯日後を指定して表示させるには、TODAY関数に+◯日を指定するだけです。
3日後なら+3
TODAY()+3
「+◯」で指定すると、シリアル値で表示されてしまうことがあります。
シリアル値とは、1900年1月1日を「1」として、そこから何日経っているかの日数を数値にしたものです。
1900/01/01 だと シリアル値「1」
1900/01/02 だと シリアル値「2」
2022/02/22 だと シリアル値「44614」
シリアル値で表示されてしまった場合は、
メニューから「表示形式」→「数字」→「日付」に変更すると、日付で表示できるようになります。
日付から年、月、日を表示
日付から年、月、日を別々で取り出したい場合は、
YEAR関数,MONTH関数,DAY関数を使用します。
YEAR()
MONTH()
DAY()
()内には、日付や関数を入力します。
YEAR("2022/02/22") → 2022
MONTH("2022/02/22") → 2
DAY("2022/02/22") → 22
TODAY関数や他の日付関数を入れることもできます。
YEAR(TODAY())
MONTH(TODAY())
DAY(TODAY())
数値を指定して年月日表示させる
数値を指定して、年月日表示させる場合はDATE関数を使用します。
DATE(年、月、日)
○ヶ月後を指定して表示
◯ヶ月後を指定するには、EDATE関数を使用します。
EDATE(開始日,月数)
来月:EDATE(TODAY(),1)
前月:EDATE(TODAY(),-1)
半年後:EDATE(TODAY),6)
1年後:EDATE(TODAY(),12)
月末の日付を表示させる
末日は、EOMONTH関数を使用します。
EOMONTH(開始日,月数)
今月の末日:EOMONTH(TODAY(),0)
来月の末日:EOMONTH(TODAY(),1)
前月の末日:EOMONTH(TODAY(),-1)
日付関数のサンプルデータ
スプレッドシートで日付のサンプルデータを公開しています。
【Copori】日付を関数で使う
サンプルデータと関数
サンプルデータのスプレッドシートには、
この記事で紹介している関数を使用したセルと、
簡単なタスク管理の日付表示ができる表があります。
全て関数のみで動いています。
関数のみでタスク管理
毎日のタスクの期限表示と、毎月、月末のタスクの期限を、
本日の日付を基準として期限日の表示をしています。
期限日を表示させる関数は、E19に入っていて、
ARRAYFORMULA関数でE19〜E21まで適用しています。
中身はIFS関数で基準日を軸として判定を行なっていますが、
分解して説明していきます!
毎日のタスク
毎日のタスクは基準日にTODAY関数が入っていて、
そこから次の日の日付を次のタスク期限日に表示させています。
IF(D19=TODAY(),TODAY()+1)
D19が今日の日付なら、+1して表示させるだけの簡単な数式です。
毎月のタスク
毎月のタスクは、基準日を期限として、
本日の日付が基準日より前なら、今月の期限の日付、
本日の日付が基準日より後なら、来月の期限の日付を表示しています。
IF(D19<31,IF(DAY(TODAY())>D19,DATE(YEAR(TODAY()),
MONTH(EDATE(TODAY(),1)),D19),
DATE(YEAR(TODAY()),MONTH(TODAY()),D19))
最初の「D19<31」で、日付の数値かどうかを判定しています。 次のIF文の「DAY(TODAY())>D19」
ここで、本日の日付が今月の基準日(D19)より後かどうかの判定をしています。
本日の日付が今月の基準日(D19)を過ぎていたら、
「DATE(YEAR(EDATE(TODAY(),1)),MONTH(EDATE(TODAY(),1)),D19)」
DATE関数で、来月の年、来月の月、基準日を指定しています。
本日の日付が今月の基準日(D19)より前だったら、
「DATE(YEAR(TODAY()),MONTH(TODAY()),D19))」
DATE関数で、本日の年、本日の月、基準日を指定しています。
月末のタスク
月末のタスクは、基準日に”末”と記入することで判定できるようにしています。
本日の日付から月末の日付を期限として表示させているだけです。
IF(D19="末",EOMONTH(TODAY(),0)
最初の「D19="末"」でD19に末が入力されているかの判定をしています。
後は、EOMONTH関数で月末を表示させているだけです。
「EOMONTH(TODAY(),0」
組み合わせてIFS関数+ARRAYFORMULA関数を使用
後は、組み合わせていくだけです。
=IFS(D19=TODAY(),TODAY()+1,
D19<31,IF(DAY(TODAY())>D19,DATE(YEAR(EDATE(TODAY(),1)),
MONTH(EDATE(TODAY(),1)),D19),DATE(YEAR(TODAY()),MONTH(TODAY()),D19)),
D19="末",EOMONTH(TODAY(),0))
ARRAYFORMULA関数を使用する時は範囲を指定するだけ
=ARRAYFORMULA(IFS(D19:D21=TODAY(),TODAY()+1,D19:D21<31,IF(DAY(TODAY())>D19:D21,DATE(YEAR(EDATE(TODAY(),1)),MONTH(EDATE(TODAY(),1)),D19:D21),DATE(YEAR(TODAY()),MONTH(TODAY()),D19:D21)),D19:D21="末",EOMONTH(TODAY(),0)))
実際の関数や動きはサンプルデータを使用してみてください。
【Copori】日付を関数で使う
チェックボックスと連動したり、GASを使って自動で日付を表示させる場合は、
こちらの記事を参考にどうぞ!
【GAS】スプレッドシートで日付を自動で入力!日付更新・曜日自動サンプル【Google Apps Script】
ありがとうございました!
コメント