「毎日シートを開くたびに日付を手入力するのが面倒」と思ったことはありませんか。手入力はミスのもとですよね。
ExcelのTODAY関数を使えば、今日の日付を自動取得できます。基本の書き方から実務パターンまでまとめて紹介します。
この記事は次のような人におすすめ
- 今日の日付をセルに自動表示したい
- 期限までの残り日数を自動で計算したい
- TODAY関数とNOW関数の違いを知りたい
TODAY関数とは?
TODAY関数(読み方: トゥデイ)は、今日の日付をシリアル値で返す関数です。英語の「today(今日)」が由来です。
Excelの日付は「シリアル値」という連番で管理されています。1900年1月1日を「1」とし、1日ごとに1ずつ増えます。
TODAY関数が返すのもこのシリアル値です。ただし表示形式が自動で「日付」に変わるので、画面上は日付として見えます。
TODAY関数の最大の特徴は、再計算のたびに値が自動更新される点です。毎日変わる日付を手入力する必要がなくなります。
NOTE
TODAY関数は日付だけを返します。日付と時刻の両方が必要な場合はNOW関数を使ってください。
TODAY関数の書き方(構文と引数)
基本構文
=TODAY()
TODAY関数には引数がありません。カッコの中は空のまま入力します。
引数の説明
| 引数 | 必須/省略可 | 内容 |
|---|---|---|
| (なし) | ― | 引数は不要。カッコ () だけを付ける |
引数がない関数でも、関数名のうしろの () は必ず必要です。=TODAY だけだと #NAME? エラーになります。
TIP
TODAY関数は「揮発性関数」と呼ばれ、セルの編集やファイルを開く操作のたびに再計算されます。数式の参照関係に関係なく毎回更新されるため、大量に使用するとファイルの動作が遅くなる場合があります。
TODAY関数の基本的な使い方
今日の日付を表示する
=TODAY()
セルに入力すると、今日の日付が表示されます。翌日にファイルを開くと自動的に翌日の日付に更新されます。
翌日・前日の日付を表示する
TODAY関数に数値を足し引きするだけで、前後の日付を取得できます。
=TODAY()-1
上の式で昨日の日付が表示されます。
=TODAY()+7
上の式で1週間後の日付が表示されます。
日付の加減算で使える目安をまとめました。
| やりたいこと | 数式 |
|---|---|
| 昨日 | =TODAY()-1 |
| 明日 | =TODAY()+1 |
| 1週間前 | =TODAY()-7 |
| 1週間後 | =TODAY()+7 |
| 30日後 | =TODAY()+30 |
日付を固定したい場合
TODAY関数は毎回更新されるため、入力した時点の日付を固定したい場合には向きません。日付を固定する方法は2つあります。
方法1: ショートカットキーで入力する
| OS | ショートカット | 内容 |
|---|---|---|
| Windows | Ctrl + ; | 今日の日付を入力(固定値) |
| Mac | Command + ; | 今日の日付を入力(固定値) |
方法2: TODAY関数の結果を値で貼り付ける
- TODAY関数が入ったセルをコピーする
- 貼り付け先で右クリック →「値」で貼り付ける
値で貼り付けると数式ではなく数値になるため、日付が変わっても更新されません。
TODAY関数の実務活用パターン
期限までの残り日数を計算する
締切日から今日の日付を引くだけで、残日数が自動計算できます。
=B2-TODAY()
B2に期限の日付が入っているとします。結果がマイナスなら期限切れです。
セルの表示形式が「日付」になってしまう場合は、表示形式を「標準」または「数値」に変更してください。
経過日数を計算する
開始日からの経過日数を求めるには、TODAY関数から開始日を引きます。
=TODAY()-A2
A2に開始日が入っているとします。たとえば入社日からの経過日数や、プロジェクト開始からの日数管理に使えます。
年齢・勤続年数を自動計算する
DATEDIF関数と組み合わせると、年齢や勤続年数を自動で計算できます。
=DATEDIF(A2, TODAY(), "Y")
A2に生年月日が入っているとします。第3引数 "Y" は「満年数」を意味します。
TODAY関数が毎日更新されるため、誕生日を過ぎると年齢も自動で変わります。
YEAR・MONTH・DAY関数と組み合わせる
TODAY関数から年・月・日だけを取り出したい場合は、それぞれの関数を組み合わせます。
=YEAR(TODAY())
今年の年(例: 2025)だけを数値で返します。
=MONTH(TODAY())
今月の月(例: 4)だけを数値で返します。
=DAY(TODAY())
今日の日(例: 15)だけを数値で返します。
これらを応用すると、「今月の1日」や「来月の1日」を数式で作ることもできます。
=DATE(YEAR(TODAY()), MONTH(TODAY()), 1)
上の式で今月1日の日付が得られます。DATE関数で年・月・日を組み立てている形です。
=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1)
上の式で来月1日の日付が得られます。月に+1するだけで翌月を指定できます。
条件付き書式で期限切れを色分けする
TODAY関数は条件付き書式のルールにも使えます。
たとえば「B列の期限日が今日を過ぎたら赤色にする」には、条件付き書式で次の数式を設定します。
=B2<TODAY()
設定手順
- 対象の範囲を選択する
- ホームタブ →「条件付き書式」→「新しいルール」
- 「数式を使用して、書式設定するセルを決定」を選ぶ
- 上の数式を入力し、塗りつぶし色を赤に設定する
期限管理の表でよく使うテクニックです。
TEXT関数と組み合わせて曜日付きで表示する
TEXT関数と組み合わせると、好きな書式で日付を文字列にできます。
=TEXT(TODAY(), "yyyy年m月d日(aaa)")
結果: 2025年4月15日(火) のように、曜日付きで表示されます。
="本日: "&TEXT(TODAY(), "m月d日")
結果: 本日: 4月15日 のように、文章中に日付を埋め込む使い方もできます。
NOTE
TEXT関数の結果は文字列になるため、日付計算には使えません。表示用と計算用で使い分けてください。
よくあるエラーと対処法
TODAY関数自体はエラーが出にくい関数ですが、意図しない結果になるケースがあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 5桁の数字が表示される | セルの表示形式が「標準」のまま | 表示形式を「日付」に変更する |
| #NAME? エラーが出る | =TODAY のようにカッコを付け忘れた | =TODAY() とカッコを付ける |
| 残日数が日付で表示される | 引き算の結果に日付書式が適用されている | セルの表示形式を「標準」に変更する |
| 日付が毎回変わってしまう | TODAY関数の仕様(揮発性関数) | 固定したい場合は Ctrl+; で入力するか、値で貼り付ける |
| 数式が再計算されない | 手動計算モードになっている | 数式タブ →「計算方法の設定」→「自動」に変更する。または F9 キーで手動再計算 |
似た関数との違い・使い分け
日付・時刻を扱う関数はいくつかあります。目的に応じて使い分けましょう。
| 関数 | 目的 | 使い方の例 |
|---|---|---|
| TODAY | 今日の日付を取得する | =TODAY() → 今日の日付 |
| NOW関数 | 今日の日付 + 現在時刻を取得する | =NOW() → 日付と時刻 |
| DATE関数 | 年・月・日の数値から日付を作成する | =DATE(2025,4,1) → 2025/4/1 |
| EDATE関数 | 基準日から○ヶ月後/前の同日を返す | =EDATE(A1,3) → 3ヶ月後 |
| EOMONTH関数 | 基準日から○ヶ月後/前の月末日を返す | =EOMONTH(A1,0) → 当月末日 |
| DATEDIF関数 | 2つの日付間の期間を求める | =DATEDIF(A1,B1,"Y") → 年数 |
TODAY関数とNOW関数の使い分け
- 日付だけあればよい → TODAY関数(整数のシリアル値を返す)
- 時刻も必要 → NOW関数(小数付きのシリアル値を返す)
TODAY関数が返すシリアル値は整数(時刻は0:00:00)です。日付同士の引き算で正確な日数が出ます。
一方、NOW関数は時刻の小数部分を含むため日数計算には向きません。
まとめ
TODAY関数は、今日の日付をシリアル値で自動取得する関数です。
- 構文:
=TODAY()── 引数なし。カッコだけを付ける - 自動更新: ファイルを開くたび・再計算のたびに今日の日付に更新される
- 日付の加減算:
=TODAY()+7で1週間後、=TODAY()-1で昨日を取得 - 固定したい場合: Ctrl+; で入力するか、値で貼り付ける
- 実務活用: 期限管理・経過日数・年齢計算・条件付き書式との組み合わせ
- 関連関数: NOW関数(時刻も取得)・DATE関数(年月日から作成)と目的に応じて使い分ける
TODAY関数はシンプルですが、他の関数と組み合わせると使い道が広がります。まずは期限管理から試してみてください。
