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

執筆者:

カテゴリ:

TODAY関数の使い方・読み方のイメージ

日付

TODAY関数の使い方・読み方

Excel関数辞典

読み方:TODAY は「トゥデイ」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)

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

使える環境Excel○Googleスプレッドシート○
このページの中身(24項目)
  1. 書式
  2. NOWとの違い
  3. 期限管理に使う
  4. 条件付き書式と組み合わせる
  5. 毎日変わることの注意点
  6. タイムゾーンに注意
  7. 日付の計算例
  8. Excelとの違い
  9. 開くたびに変わるという性質を設計に織り込む
  10. 期限管理の作り方
  11. 時刻を含むかどうかで結果が変わる
  12. 再計算による負荷
  13. 基準日を持つ設計の利点
  14. 期限管理の表を設計する
  15. 「日付」の関数を全体から見る
  16. 数式を書く前の手順
  17. どの関数でも共通する確認
  18. 引き継ぐときに残すこと
  19. このサイトの収録状況
  20. よくある質問
  21. まとめ
  22. 関連する関数
  23. TODAY が思ったように動かないとき
  24. 期限管理での使い方

この記事の書式と対応環境の出どころ(2026-08-26 確認)

関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。

引数がなく、=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のシステム時刻を使い、スプレッドシートはファイルの設定を使います。共有ファイルではスプレッドシートのほうが一貫します。


開くたびに変わるという性質を設計に織り込む

今日の日付を返す関数は、シートを開くたび、何かを入力するたびに再計算されます。常に最新の日付になるので、期限管理や年齢の表示には最適です。

しかし、この性質が問題になる場面もあります。ある時点の状態を記録として残したい場合です。

たとえば、受注日を入力する欄にこの関数を使うと、翌日開いたときには翌日の日付になります。記録として残りません。入力した日を残したいなら、関数ではなく実際の日付を入力する必要があります。日付を入力する操作にはショートカットがあり、押した時点の日付が値として入ります。

同じことは、集計表の基準日でも起こります。四月末時点の在籍者数を出した表が、五月に開くと五月時点の数字に変わってしまいます。基準日はセルに入力し、そこを参照する形にしてください。

判断の基準は単純です。常に最新であってほしいなら関数、その時点を残したいなら値。 この使い分けを最初に決めておけば、後から数字が変わって困ることはなくなります。


期限管理の作り方

この関数がもっとも活きるのが、期限の管理です。基本の考え方は、期限日から今日を引いて残り日数を出すことです。

残り日数がマイナスなら期限切れ、零なら当日、正なら残りがあるという判定になります。この数値をもとに、条件付き書式で色を分けると、一目で状況が分かる表になります。

実務では、段階を設けるとより使いやすくなります。期限切れは赤、三日以内は橙、一週間以内は黄、それ以外は色なし。この程度の段階があれば、優先順位が視覚的に伝わります。

注意点として、条件付き書式で今日の日付を使う場合、表示のたびに評価されます。行数が多いと動作が重くなることがあります。範囲は必要な部分に絞ってください。

もうひとつ、土日祝を除いた営業日で数えたい場合は、専用の関数が必要です。単純な引き算では暦日になります。締切管理では、暦日と営業日のどちらで数えるかを明確にしておいてください。

具体的な色分けの手順は、条件付き書式の記事にまとめています。→ 条件付き書式で行全体に色を付ける方法


時刻を含むかどうかで結果が変わる

今日の日付を返す関数は、時刻を含みません。零時ちょうどの値になります。一方、現在の日時を返す関数は、時刻まで含みます。

この違いが、比較のときに影響します。データに時刻付きの日時が入っている場合、今日の日付と比較すると、今日の午前零時と比べることになります。今日発生したデータは、時刻の分だけ大きくなるため、今日以下という条件から外れます。

「今日までのデータ」を集計したつもりが、今日の分が抜けている。この種の誤りは、件数を確認しないと気づきません。

対処としては、条件を明日の零時未満にするか、時刻を切り落とした作業列を用意します。後者のほうが、後の工程でも扱いやすくなります。

逆に、経過時間を計算したい場合は、時刻を含む関数を使う必要があります。用途に応じて使い分けてください。


再計算による負荷

今日の日付を返す関数は、揮発性の性質を持っています。シート内のどこかが変更されるたびに再計算されます。

数個であれば影響はありませんが、行数の多い表で各行に書いていると、入力のたびにすべてが再計算されます。さらに、それを参照する数式も連鎖します。

対処は単純で、今日の日付は一箇所だけに置き、各行はそのセルを参照することです。参照するだけなら揮発性ではないので、負荷が大きく下がります。

基準日をセルに置く設計は、この負荷対策としても有効です。過去時点での集計もできるようになるため、二重の利点があります。

条件付き書式の中で今日の日付を使う場合も同様です。可能なら、基準日のセルを参照する形にしてください。


基準日を持つ設計の利点

今日の日付を直接使うのではなく、基準日をセルに置いて参照する。この一手間には、三つの利点があります。

第一に、過去の時点で集計し直せます。四月末時点の状況を確認したい、というときに基準日を書き換えるだけで済みます。今日の日付を各所に埋め込んでいると、この確認ができません。

第二に、動作が軽くなります。今日の日付を返す関数は揮発性で、シートのどこかが変更されるたびに再計算されます。各行に書いていると、行数分の揮発性関数が入力のたびに走ります。一箇所にまとめれば、影響が最小限になります。

第三に、基準日が明示されます。集計表を見た人が、いつ時点の数字なのかをすぐ確認できます。印刷したときにも残ります。

基準日のセルには、今日の日付を返す関数を入れておいても構いません。普段は自動で更新され、必要なときだけ手で書き換える、という運用ができます。

この設計は、日付を扱うすべての表に当てはまります。期限管理、年齢計算、在籍期間、経過日数。いずれも基準日を一箇所に持つ形にしてください。


期限管理の表を設計する

期限を管理する表には、必要な列が決まっています。過不足なく揃えると、運用が安定します。

項目名、担当者、期限日、完了フラグ、残り日数、状態。この六列が基本です。

残り日数は、期限日から基準日を引いて求めます。完了しているものは対象外にしたいので、完了フラグで分岐します。

状態は、残り日数から判定します。完了、期限切れ、要注意、余裕あり。四段階あれば十分です。この列を条件付き書式の条件に使えば、色分けが単純になります。

並べ替えは、状態と残り日数の二段階で行います。期限切れが上、その中で日数の大きい順、という並びにすると、対処すべき順に並びます。

絞り込みで完了を除外すれば、残りの作業だけが表示されます。

この構成は、個人の作業管理でも、チームの案件管理でも使えます。列を増やしたくなりますが、増やすほど更新が面倒になります。まずこの六列で運用し、本当に必要になったものだけを足してください。

「日付」の関数を全体から見る

日付と時刻を扱う関数群です。同じカテゴリの関数は、つまずく場所も似ています。この記事のほかに18本あります。

記事
DATE
DATEDIF
DATEVALUE
DAY
DAYS
EDATE
EOMONTH
HOUR
MINUTE
MONTH
NETWORKDAYS
NOW
TIME
WEEKDAY
WEEKNUM
WORKDAY
YEAR
YEARFRAC

このカテゴリで共通するつまずき

文字列の日付には使えません。日付として認識されているかを先に確認してください。1つで理解した内容は、同じカテゴリの他の関数にもそのまま使えます。

どれを使うかの決め方

日数・月数・営業日のどれが必要かで使う関数が決まります。関数の一覧を眺めて選ぼうとすると、どれも当てはまるように見えて決まりません。

迷ったときは

→ 全関数の一覧 に目的別の索引があります。


数式を書く前の手順

先に決めておけば、書くのは数分で終わります。

1. 出したい結果を一文で書く

「何を、どの条件で、どんな形で出したいか」。この一文が書ければ、関数はほぼ決まります。書けないなら、まだ要件が固まっていません。

2. 元データの型を確認する

文字列の日付には使えません。日付として認識されているかを先に確認してください。=ISNUMBER(A2) で数値かどうかを確認できます。見た目が同じでも、数値と文字列は別物です。

3. 空欄と0の扱いを決める

未入力なのか、実績が0なのか。表の意味が変わります。どちらとして扱うかを決めてから書いてください。

4. 条件の数を数える

日数・月数・営業日のどれが必要かで使う関数が決まります。将来条件が増える可能性があるなら、最初から複数条件に対応する形にしてください。

5. 共有先の環境を確認する

新しい関数は、古い環境で開くとエラーになります。社外に渡すファイルでは、この一点で選択肢が変わります。

6. 1行だけ書いて確認する

全行にコピーする前に、1行分の結果が正しいかを見てください。間違ったまま広げると、直す手間が増えます。


どの関数でも共通する確認

うまくいかないときに見る場所は、ほぼ決まっています。

参照を固定したか

下方向にコピーする数式では、動いてはいけない参照を固定します。上の数行だけ見て判断しないでください。ずれは下のほうで表面化します。

範囲の行数が揃っているか

複数の範囲を渡す関数では、行数がずれると結果が狂います。エラーにならず値が返るため、気づきにくい種類の間違いです。

型が揃っているか

=ISNUMBER(A2)

数値として入っているかを判定します。システムから書き出したデータでは、これが原因のことが多くあります。

前後に空白が入っていないか

=LEN(A2)&" / "&LEN(TRIM(A2))

数が違えば、余分な空白が入っています。見た目では判別できません。

別の方法で検算したか

同じ数字を別の関数でも出して、突き合わせてください。1つの結果だけを見ても、正しいかどうかは判断できません。

最終行まで確認したか

一番下までスクロールして、結果を見てください。途中から値が変わっていないかを確認します。


引き継ぐときに残すこと

数式は動いていても、意図は残りません。渡す前に、次の点をシート内にメモしてください。3分で終わります。

何を出している数式か

一行で構いません。読めば分かると思っても、数か月後の自分には分かりません。

どの表を参照しているか

参照先のシート名と、更新の担当。別ファイルなら、その場所も書いてください。

該当しないときの扱い

空欄にしているのか、文言を出しているのか、エラーのまま残しているのか。書いていないと、受け取った側は空欄をデータなしと読みます。

触ってはいけない場所

列を挿入すると壊れる数式がある場合、必ず書き残してください。この一行があるだけで、引き継ぎ後の事故が大きく減ります。

使った関数の対応環境

新しい関数を使っている場合、古い環境では開けません。共有の範囲が広がる可能性があるなら、明記してください。

確定した期間は値にする

締めた月の集計は、値貼り付けにしてください。参照元を消しても壊れなくなり、ファイルも軽くなります。

このサイトの収録状況

収録は201本です。カテゴリごとの内訳を出しておきます。

カテゴリ記事数
目的別51本
集計47本
文字列31本
日付19本 ←この記事
検索・参照15本
条件15本
機能12本
配列・抽出10本
関数一覧1本

探し方の順番

関数名が分かっているなら検索窓から。やりたいことだけ決まっているなら「目的別」から。近い関数を比べたいなら、同じカテゴリの一覧から入ってください。

記事の構成

どの記事も、書式・実例・つまずきやすいところ・似た関数との使い分けを同じ順番で並べています。1本読めば、他の記事も同じ場所を探せます。


よくある質問

Q. 数値が表示されます

セルの表示形式が標準になっています。日付形式に変えてください。

Q. 更新されません

再計算の設定が手動になっている可能性があります。設定を確認するか、再計算を実行してください。

Q. 入力した日を残したいのですが

関数ではなく値として入力してください。ショートカットで今日の日付を入力できます。

Q. 時刻も欲しいのですが

現在の日時を返す関数を使ってください。ただし、こちらも揮発性です。

Q. 昨日や明日の日付は出せますか

今日の日付に数値を足し引きするだけです。日付は連続した数値なので、一を足せば翌日になります。

Q. 営業日で数えたいのですが

営業日を扱う専用の関数があります。祝日の一覧を用意すれば、それも除外できます。

Q. 月末の日付が欲しいのですが

月末を求める専用の関数があります。→ EOMONTH関数の使い方

Q. ファイルが重いのですが

各行に書いていると負荷になります。一箇所に置いて、各行はそこを参照してください。



まとめ

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

関連する関数

TODAY が思ったように動かないとき

TODAY はエラーを返しにくい関数です。困るのは、たいてい次の3つです。

値が勝手に変わる

TODAY は開くたびに再計算されます。 「登録日」を TODAY で入れると、翌日開いたときには翌日の日付になります。 記録として残すなら、入力した時点で値に固定してください。 Ctrl+;(セミコロン)で、今日の日付を値として入力できます。

引き算の結果が日付になる

=TODAY()-A2 の結果が 1900/1/5 のように表示されるのは、 セルの表示形式が日付のままだからです。 表示形式を「数値」に戻すと、日数が出ます。エラーではありません。

時刻まで入っていて、1日ずれる

TODAY は時刻を持ちません(0:00)。 比較する相手が NOW や、時刻付きの記録だと、 同じ日でも「相手のほうが大きい」と判定されます。 日付だけで比べるなら、相手側を =INT(A2) で切り捨ててください。

期限管理での使い方

やりたいこと式
期限までの残り日数=A2-TODAY()
期限を過ぎたら「超過」=IF(A2<TODAY(),"超過","")
3日以内なら色を付ける(条件付き書式)=AND(A2-TODAY()>=0,A2-TODAY()<=3)
今月内かどうか=TEXT(A2,"yyyymm")=TEXT(TODAY(),"yyyymm")

営業日で数えたいなら NETWORKDAYS、 何営業日後かを出すなら WORKDAY を使います。 土日と祝日を除けます。