Excelで今日の日付や現在時刻を自動表示したいのに、TODAY関数とNOW関数の違いが分からず迷っていませんか。 どちらも便利ですが、更新の仕組みや表示形式を理解しないと、日付が勝手に変わる、数字で表示される、といったトラブルが起こります。 この記事では、基本の使い方から実務で使える活用例、値を固定する方法、よくあるエラーの対処法まで分かりやすく整理して解説します。
TODAY関数とNOW関数の違いとは?構文と戻り値を比較

結論から言うと、TODAY関数は今日の日付だけを返し、NOW関数は現在の日付と時刻を返します。
日付管理が目的ならTODAY関数、作業時刻の記録や経過時間の計算まで行いたいならNOW関数を選ぶのが基本です。
どちらも再計算時に値が更新される揮発性関数なので、固定したい入力には向きません。 基本仕様はMicrosoft公式でも案内されています。 Source
TODAY関数の構文と戻り値
TODAY関数の構文はとてもシンプルで、=TODAY()と入力するだけです。 引数は不要です。
戻り値は今日の日付に対応するシリアル値ですが、通常はセルの表示形式によって 2026/03/24 のような日付として表示されます。
今日を基準に日数計算をしたい場面で特に便利で、たとえば =TODAY()+7 なら7日後の日付を求められます。 Source
NOW関数の構文と戻り値
NOW関数の構文は =NOW() です。 こちらも引数は不要です。
戻り値は現在の日付と時刻を含むシリアル値で、日付部分が整数、時刻部分が小数として扱われます。
たとえば 0.5 は12時間を意味するため、=NOW()-0.5 で12時間前の日時を計算できます。 時刻を含む管理やタイムスタンプに向く関数です。 Source
【比較表】TODAY関数とNOW関数の違い一覧
使い分けは、時刻が必要かどうかで判断すると迷いません。
項目TODAY関数NOW関数構文=TODAY()=NOW()戻り値今日の日付現在の日付と時刻時刻の保持しないする主な用途期限管理、経過日数作業記録、時刻管理再計算で更新するする
日報の作成日ならTODAY関数、問い合わせ受付時刻の記録ならNOW関数、という使い分けが実務では分かりやすいです。
知っておきたい基礎知識|揮発性関数とシリアル値

TODAY関数とNOW関数を正しく使うには、揮発性関数とシリアル値の2つを理解することが重要です。
この前提を知らないと、ファイルを開くたびに日付が変わる、日付が 45600 のような数字で出る、といった典型的な混乱が起こります。
逆に仕組みを知っておけば、日数計算、期限判定、表示形式の変更まで迷わず扱えるようになります。
揮発性関数とは?日付が自動更新される仕組み
揮発性関数とは、ブックの再計算時に結果が更新される関数です。 TODAY関数とNOW関数はその代表例です。
つまり、昨日保存したファイルを今日開くと、セル内の値も今日の日付や現在時刻に変わります。 固定入力ではなく、常に最新を表示するための関数だと考えると分かりやすいです。
進捗表や残日数の管理には便利ですが、請求書の発行日など後から変わっては困る項目には不向きです。 Source
シリアル値とは?Excelが日付を数値で管理する理由
シリアル値とは、Excelが日付や時刻を内部で管理するための連番です。 Excelでは 1900年1月1日 を基準に日数を積み上げて扱います。
そのため、ある日付は 45000台 のような整数で保存され、時刻は 0.25 や 0.5 のような小数で表現されます。
この仕組みがあるからこそ、終了日から開始日を引くだけで日数差を計算できます。 日付が数字に見えても、壊れているわけではありません。 Source
日付の表示形式を変更する方法(yyyy/mm/dd等)
日付の見た目を変えたいときは、関数を直すのではなくセルの表示形式を変更します。
基本手順は、対象セルを選択し、Ctrl+1 を押して セルの書式設定 を開き、表示形式 から 日付 または ユーザー定義 を選ぶ流れです。
たとえば yyyy/mm/dd、yyyy年m月d日、h:mm などへ変更できます。 数字表示になったときも、まずは表示形式を確認しましょう。 Source
TODAY関数・NOW関数の実践活用例6選

TODAY関数とNOW関数は、単に今日を表示するだけでなく、日数計算、期限管理、抽出、記録まで幅広く使えます。
ここでは実務で使いやすい6つの代表例を紹介します。 数式をそのまま試せば、勤怠表、進捗表、営業リストでもすぐ活用できます。
活用例①:経過日数を計算する
ある日から今日まで何日経ったかを出すなら、=TODAY()-開始日 が基本です。
たとえば A2 に契約日が入っている場合、=TODAY()-A2 で経過日数を求められます。 30日、90日、180日などの節目判定にも使いやすい数式です。
結果が日付で表示されたら、セルの表示形式を標準か数値に変えてください。 経過日数の確認では最もよく使う形です。
活用例②:締め切りまでの残り日数を計算する
締め切りまであと何日かを出すなら、=締め切り日-TODAY() を使います。
たとえば B2 に納期がある場合、=B2-TODAY() で残り日数を表示できます。 5日未満なら注意、0未満なら期限切れ、といった管理が簡単になります。
残り日数は毎日自動更新されるため、手動で日付を打ち替える必要がありません。 タスク管理表や応募締切の一覧に最適です。
活用例③:年齢を自動計算する(DATEDIF併用)
年齢を正確に出すなら、DATEDIF関数とTODAY関数の組み合わせが定番です。
生年月日が A2 にあるなら、=DATEDIF(A2,TODAY(),’Y’) で満年齢を求められます。 誕生日が来るまでは前年齢のままになるため、単純な年の引き算より正確です。
DATEDIF関数は単位に Y、M、D などを使い分けます。 年齢計算は Y が基本です。 Source
活用例④:条件付き書式で期限切れを強調する
期限切れの行を自動で赤くしたいなら、TODAY関数を条件付き書式に組み込みます。
たとえば 期限日が C2 にある表なら、数式に =C2 さらに =AND(C2-TODAY()<=3,C2>=TODAY()) のようにすれば、残り3日以内を黄色で警告することも可能です。 視覚的な管理に非常に強い方法です。 今日のデータだけを目立たせたいときは、TODAY関数で一致判定を行います。 たとえば 受付日が D列にある場合、=D2=TODAY() を条件付き書式に使えば当日の行だけ色付けできます。 フィルターの補助列として =IF(D2=TODAY(),’今日’,”) とする方法も便利です。 日時まで入っているデータでは、=INT(D2)=TODAY() として日付部分だけを比較すると判定ミスを防げます。 作業開始時刻や更新日時を記録したいなら、NOW関数が役立ちます。 たとえば =NOW() を入れると、現在の日時を表示できます。 日時の差を取りたい場合は、終了時刻-開始時刻 で所要時間の計算も可能です。 ただしNOW関数は再計算で更新されるため、記録を残す用途では後述する固定方法を併用しましょう。 自動表示と固定保存は分けて考えるのがコツです。 TODAY関数やNOW関数は便利ですが、自動更新されるという特性があります。 そのため、見積日、受付日時、承認日時のように後から変わっては困る情報は、別の方法で固定する必要があります。 ここでは、初心者でも実践しやすい3つの固定方法を紹介します。 最も手軽なのは、関数の結果を値として貼り付ける方法です。 手順は、対象セルをコピーし、貼り付け先または同じ場所に 値の貼り付け を行うだけです。 これで数式が消え、その時点の日付や時刻だけが残ります。 一度きりの確定処理に向いており、請求書の発行日や提出日などを固定したいときに便利です。 固定した今日の日付を素早く入れるなら、ショートカット入力が最適です。 現在の日付は Ctrl+;、現在の時刻は Ctrl+Shift+; で入力できます。 日付と時刻の両方を入れたい場合は、日付入力後に半角スペースを入れて時刻を追加します。 この方法は関数ではないため、翌日になっても値は変わりません。 Microsoft公式でも案内されている実用的な方法です。 Source 入力をトリガーに日時を自動固定したいなら、VBAを使う方法があります。 たとえば B列に入力があったら C列へ固定日時を入れる、という運用なら、Worksheet_Change イベントで Target.Value が空でないときに Now を代入します。 複数人で使う台帳や受付管理で便利ですが、マクロ有効ブックの扱いと誤動作防止が必要です。 テスト用ファイルで十分に確認してから本番導入しましょう。 TODAY関数やNOW関数では、数式そのものよりも表示形式や入力値が原因で困るケースが多いです。 ここでは、現場でよくある5つのトラブルと、その解決策を短時間で確認できるように整理します。 日付が 45600 のような数字になる原因は、セルの表示形式が標準や数値になっているためです。 対処法は簡単で、セルを選択して Ctrl+1 を押し、日付 または ユーザー定義 に変更します。 yyyy/mm/dd や yyyy年m月d日 を選べば見やすく直せます。 関数が壊れているわけではなく、内部のシリアル値がそのまま見えているだけです。 Source 1日ずれる原因は、セルに時刻が含まれているのに日付だけで比較しているケースが多いです。 たとえば 2026/03/24 23:00 と TODAY() を比較すると、表示上は同じ日に見えても内部では時刻分の差があります。 対策として、日付だけで比べるなら INT関数で整数化するか、表示形式だけでなく実際の値に時刻が入っていないか確認しましょう。 これは故障ではなく、TODAY関数とNOW関数が揮発性関数だからです。 ブックを開いたり再計算したりすると、その時点の今日や現在時刻に更新されます。 したがって、記録目的なら関数を使わず固定入力に切り替える必要があります。 固定したい場合は、値貼り付け、Ctrl+;、Ctrl+Shift+;、またはVBAによる固定入力を選びましょう。 #VALUE! エラーは、日付として認識されない文字列を計算に使っているときに起こりやすいです。 たとえば 2026-3-24 が文字列扱いになっていたり、全角スラッシュや余分な空白が混ざっていたりすると、TODAY()-A2 の計算が失敗します。 対策は、対象セルを本物の日付に直すことです。 必要に応じて DATEVALUE関数やデータの区切り位置を使って日付データへ変換しましょう。 NOW関数を使っているのに時刻が見えない場合、表示形式が日付だけになっている可能性が高いです。 セルの書式を yyyy/mm/dd h:mm や h:mm:ss に変更すれば、同じ値でも時刻まで表示できます。 TODAY関数はそもそも時刻を返さないため、時刻表示が必要ならNOW関数を使ってください。 見た目だけの問題か、関数選択の問題かを切り分けることが大切です。 TODAY関数とNOW関数だけでも多くの作業はできますが、DATE関数、YEAR関数、DATEDIF関数などを組み合わせると実務の幅が大きく広がります。 ここでは、特に一緒に使う機会が多い関数を整理して、役割の違いを分かりやすく紹介します。 DATE関数は、年、月、日を指定して任意の日付を作る関数です。 たとえば =DATE(2026,4,1) とすれば、2026年4月1日 を正しい日付データとして作成できます。 文字列入力よりも計算や比較で安定しやすいのが利点です。 TODAY()+30 のような相対日付と、DATE関数で作る固定日付を使い分けると、期限表が整理しやすくなります。 日付から年、月、日だけを取り出したいときは、YEAR、MONTH、DAY関数を使います。 たとえば =YEAR(TODAY()) なら今年、=MONTH(TODAY()) なら今月を取得できます。 月次集計や誕生月判定などで便利です。 日付を分解して条件式へ使えるため、集計表やダッシュボードでも出番が多い関数です。 Source DATEDIF関数は、2つの日付の差を年数、月数、日数で求める関数です。 たとえば =DATEDIF(A2,TODAY(),’D’) で経過日数、=DATEDIF(A2,TODAY(),’Y’) で年数を算出できます。 勤続年数、年齢、契約期間の確認に向いています。 ただし単位の使い分けには注意が必要です。 特に MD は意図しない結果になることがあるため、基本は Y、M、D を優先すると安全です。 Source TODAY関数とNOW関数の使い分けは、日付だけか、日時まで必要かで考えると整理しやすくなります。 TODAY関数は今日の日付だけを返し、期限管理や経過日数の計算に向くNOW関数は現在の日時を返し、作業記録や時刻管理に向くどちらも再計算で更新されるため、固定保存には値貼り付けやショートカット入力を使う日付が数字になる、時刻が消える場合は、まず表示形式を確認するDATEDIFやDATE関数を併用すると、年齢計算や期間管理まで効率化できる まずは、今日の日付表示、残り日数の計算、固定入力の3つを実際のシートで試してみてください。 基本を押さえるだけで、Excelの日付管理は一気に楽になります。活用例⑤:当日のデータだけを抽出・ハイライトする
活用例⑥:タイムスタンプを記録する(NOW関数)
日付を固定したい!TODAY・NOW関数の値を更新させない3つの方法

方法①:値として貼り付ける(コピー&ペースト)
方法②:ショートカットキーで直接入力する(Ctrl+;)
方法③:VBAで入力時に自動固定する(上級者向け)
よくあるエラー・トラブルと対処法5選

日付がシリアル値(数字)で表示される
計算結果が1日ずれる
ファイルを開くたびに日付が変わる
#VALUE!エラーが出る
時刻が表示されない・消えてしまう
関連する日付関数との使い分け

DATE関数:任意の日付を作成する
YEAR/MONTH/DAY関数:日付から年月日を抽出する
DATEDIF関数:期間(年数・月数・日数)を計算する
まとめ



コメント