TODAY・NOW関数の使い方|現在の日付と時刻を取得
TODAY関数とNOW関数は、現在の日付や日時を取得するExcelの基本関数です。引数が不要で手軽に使えるうえ、ファイルを開くたびに自動更新されるため、経過日数の計算や期限管理、タイムスタンプの表示など、さまざまな場面で活躍します。
各関数の基本構文
TODAY関数
=TODAY()
現在の日付(年月日)をシリアル値で返します。時刻情報は含みません。
NOW関数
=NOW()
現在の日付と時刻をシリアル値で返します。
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| (なし) | TODAY関数・NOW関数ともに引数はありません | - |
どちらの関数も括弧は必要ですが、中に引数は入れません。
TODAY関数とNOW関数の違い
| 項目 | TODAY | NOW |
|---|---|---|
| 返す値 | 日付のみ | 日付と時刻 |
| 更新タイミング | ファイルを開いたとき、再計算時 | ファイルを開いたとき、再計算時 |
| 表示例 | 2026/06/17 | 2026/06/17 14:30 |
| 用途 | 日単位の計算 | 時刻を含む処理 |
実践例1:今日の日付を表示する
最もシンプルな使い方です。セルに今日の日付を表示します。
=TODAY()
結果は当日の日付が表示されます。ファイルを翌日開くと自動的に翌日の日付に更新されます。
日付の表示形式はセルの書式設定で変更できます。TEXT関数で文字列として整形することも可能です。
=TEXT(TODAY(), "YYYY年M月D日(AAA)")
実践例2:経過日数の計算
特定の日付から今日までの経過日数を求めます。
=TODAY() - A2
A2に開始日(例:2026/01/01)が入力されている場合、今日までの日数が数値で返されます。
納期までの残り日数を計算する場合も同様です。
=A2 - TODAY()
結果が正の値なら納期前、負の値なら納期超過です。IF関数と組み合わせて状態を表示できます。
=IF(A2 - TODAY() < 0, "期限超過", IF(A2 - TODAY() <= 7, "あと" & A2 - TODAY() & "日", "余裕あり"))
実践例3:年齢の計算
生年月日から現在の年齢を計算します。DATEDIF関数と組み合わせます。
=DATEDIF(A2, TODAY(), "Y")
A2に生年月日が入力されている場合、満年齢が数値で返されます。DATEDIFの第3引数「Y」は完了した年数を返します。
実践例4:NOW関数でタイムスタンプを表示
現在の日時を表示します。
=NOW()
レポートや帳票に「出力日時」を自動表示する場面で使えます。TEXT関数で書式を整えます。
="出力日時: " & TEXT(NOW(), "YYYY/MM/DD HH:MM:SS")
ただし、NOW関数は再計算のたびに値が変わるため、固定のタイムスタンプが必要な場合はCtrl+;(日付)やCtrl+:(時刻)のショートカットで直接入力する方が適切です。
実践例5:月初日・月末日の計算
TODAY関数を基準にして、当月の初日や末日を求めます。
当月初日を求める場合は次のようにします。
=DATE(YEAR(TODAY()), MONTH(TODAY()), 1)
当月末日を求める場合はEOMONTH関数を使います。
=EOMONTH(TODAY(), 0)
翌月初日を求める場合は次の通りです。
=DATE(YEAR(TODAY()), MONTH(TODAY()) + 1, 1)
これらの数式を使えば、月次レポートの期間を自動設定できます。
よくあるエラーと対処法
日付が数値で表示される
TODAY関数やNOW関数の結果がシリアル値(例:46184)で表示される場合は、セルの書式設定が「標準」や「数値」になっています。書式設定を「日付」に変更してください。
値が更新されない
TODAY関数とNOW関数は揮発性関数であり、以下のタイミングで更新されます。
- ファイルを開いたとき
- セルの内容を編集したとき
- F9キーで再計算を実行したとき
手動計算モードに設定されている場合は、自動計算に切り替えるか、F9キーで手動更新してください。
固定の日付が必要な場合
TODAY関数やNOW関数は常に変化するため、記録用途には向きません。特定時点の日付を固定したい場合は、以下の方法を使います。
- 値として貼り付け(Ctrl+Shift+V)で数式を値に変換する
- Ctrl+;で現在の日付を直接入力する
- VBAのWorksheet_Changeイベントで入力時刻を記録する
日付の引き算で小数が表示される
NOW関数同士の引き算では時刻部分が含まれるため、結果に小数が出ます。日数だけが必要な場合はINT関数で整数部分を取り出します。
=INT(NOW() - A2)
日付のシリアル値について
Excelは日付を「シリアル値」と呼ばれる数値で管理しています。1900年1月1日を1として、1日ごとに1ずつ増加します。
- 2026年1月1日 = 46023
- 2026年6月17日 = 46190
この仕組みにより、日付同士の引き算で日数を求めたり、日付に数値を足して将来の日付を計算したりできます。
=TODAY() + 30 ' 30日後の日付
=TODAY() - 7 ' 1週間前の日付
Google スプレッドシートでの互換性
TODAY関数とNOW関数はGoogle スプレッドシートでも同じ構文で利用できます。動作もExcelと同一ですが、更新のタイミングが異なる場合があります。Google スプレッドシートでは設定により再計算の頻度を選択できます。
まとめ
TODAY関数とNOW関数は現在の日付・時刻を取得する基本関数です。
- TODAY関数は日付のみ、NOW関数は日付と時刻を返す
- 再計算のたびに値が更新される
- 経過日数の計算、年齢の計算、期限管理に活用できる
- 固定の値が必要な場合は値の貼り付けで対応する
- DATE関数やEOMONTH関数と組み合わせて月初日・月末日を求められる
日付に関するあらゆる処理の出発点となる関数です。他の日付関数と合わせて使いこなしましょう。