日付
TODAY関数の使い方・読み方
読み方:TODAY は「トゥデイ」と読みます。(一般的な読み方です。公式に読み仮名の定めはありません)
TODAYは、今日の日付を返す関数です。
このページの中身(24項目)
この記事の書式と対応環境の出どころ(2026-08-26 確認)
- Google スプレッドシート ヘルプ:公式の書式は
TODAY()
https://support.google.com/docs/answer/3092984 - Microsoft サポート:TODAY 関数
https://support.microsoft.com/ja-jp/excel/functions/today-function
関数の仕様は追加・変更されることがあります。書式が合わないときは、上の公式ページで最新をご確認ください。
引数がなく、=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 を使います。 土日と祝日を除けます。