TODAY関数の使い方|今日の日付を自動で入れる

執筆者:

カテゴリ:

TODAYは、今日の日付を返す関数です。

引数がなく、=TODAY() と書くだけです。単純な関数ですが、値が毎日変わるという性質があり、これを理解していないと事故につながります。

書式

=TODAY()

括弧の中は空です。括弧自体は省略できません。

NOWとの違い

関数 返すもの
TODAY() 今日の日付(時刻は0:00)
NOW() 今日の日付+現在時刻

日付だけ扱うならTODAYを使ってください。NOW() は時刻を含むため、日付の比較で意図しない結果になります。

=IF(A1 = TODAY(), "今日", "")     正しく動く
=IF(A1 = NOW(), "今日", "")       ほぼ一致しない(時刻まで比較される)

期限管理に使う

TODAYの主な用途がこれです。

期限までの日数

=A1 - TODAY()

結果が数値で出ないときは、セルの表示形式が「日付」になっています。「数値」に変えてください。

期限切れの判定

=IF(A1 < TODAY(), "期限切れ", "")

残り日数で3段階に分ける

=IFS(A1 < TODAY(), "期限切れ",
     A1 - TODAY() <= 3, "まもなく",
     TRUE, "余裕あり")

IFS は上から順に判定されるので、厳しい条件から書く必要があります。

遅延件数を数える

=COUNTIFS(D:D, "未処理", E:E, "<"&TODAY())

COUNTIFS と組み合わせるのが定番です。比較演算子とTODAYは & で連結してください。" と書くと文字列として扱われます。

条件付き書式と組み合わせる

期限が近い行に色を付けるには、カスタム数式に次を入れます。

=AND($E2 <> "", $E2 < TODAY(), $D2 = "未処理")

列だけを $ で固定するのがポイントです。行を固定しないことで、各行が個別に判定されます。

$E2 <> "" を入れているのは、空欄を期限切れと判定させないためです。空欄は0として扱われ、TODAYより小さくなるので、これがないと未入力の行が全部赤くなります。実務でよく起きるミスです。

毎日変わることの注意点

TODAYは揮発性関数です。 ファイルを開くたび、シートを編集するたびに再計算されます。

そのため、次のような使い方は危険です。

記録として残らない

「入力した日」を記録するつもりで =TODAY() を入れると、翌日には翌日の日付に変わります。 記録にはなりません。

対策: 入力日を固定したいなら、Ctrl + ; で日付を値として入力してください(Excel・スプレッドシート共通のショートカット)。

自動で記録したいなら、Google Apps Script か、スプレッドシートの「変更履歴」を使うことになります。数式では実現できません。

大量に置くと重い

揮発性関数なので、何千個も置くとファイル全体が重くなります。

対策: どこか1セルに =TODAY() を置き、他はそのセルを参照してください。

$A$1に  =TODAY()
他のセル  =B2 - $A$1

これだけで再計算のコストが大きく下がります。

過去のデータが変わって見える

「今日から見た残り日数」を保存すると、日が経つにつれて値が変わります。スクリーンショットを撮ったときと違う数字になるので、報告資料には向きません。

報告用には、基準日をセルに入力して固定するほうが確実です。

タイムゾーンに注意

TODAYが返す日付は、ファイルのタイムゾーン設定に依存します。

スプレッドシートの「ファイル → 設定 → タイムゾーン」を確認してください。海外のメンバーと共有していると、日付が1日ずれることがあります。

日付の計算例

月初・月末

=EOMONTH(TODAY(), -1) + 1    今月の1日
=EOMONTH(TODAY(), 0)         今月の末日

EOMONTH と組み合わせます。

今月のデータだけ集計

=SUMIFS(C:C, A:A, ">="&EOMONTH(TODAY(),-1)+1, A:A, "<="&EOMONTH(TODAY(),0))

曜日

=TEXT(TODAY(), "aaa")

年齢や勤続年数

=DATEDIF(A1, TODAY(), "Y")

DATEDIF と組み合わせます。

Excelとの違い

TODAY・NOW ともに共通です。書式も挙動も同じです。

タイムゾーンの扱いだけ異なります。ExcelはPCのシステム時刻を使い、スプレッドシートはファイルの設定を使います。共有ファイルではスプレッドシートのほうが一貫します。

まとめ

  • - 書式は =TODAY()。括弧の中は空
  • - 時刻が要らないなら NOW() ではなくTODAY
  • - 比較演算子と組み合わせるときは "<"&TODAY()
  • - 毎日変わるので、記録には使えない。固定するなら Ctrl + ;
  • - 揮発性関数。1セルに置いて他から参照すると軽くなる
  • - 条件付き書式では 空欄の除外 を忘れずに

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です