スプレッドシートで「今日の日付」や「現在の日時」をそのまま取得できるTODAY関数・NOW関数について、使い方と内部のしくみを解説します。草野球の成績管理表で、試合日から経過日数を自動計算する場面を例に、初心者向けに丁寧に説明します。
TODAY関数・NOW関数とは
TODAY関数は「今日の日付」を、NOW関数は「今日の日付+現在の時刻」を返す関数です。どちらも引数(カッコの中身)は不要で、シートを開いた瞬間の日時をそのまま取得できます。成績管理表では「試合からの経過日数」や「最終更新日時の記録」など、”今この瞬間”を基準にした計算で登場します。
基本の書式はこうです。引数がないので、カッコの中は空のままにします。
=TODAY() =NOW()
成績管理表での実例:試合日からの経過日数を計算する
大阪グーニーズの「試合一覧」シートには、各試合の試合日をB列に記録しているとします。この試合日から「今日までに何日経過したか」を自動計算したいとき、TODAY関数を使います。
| 試合日 | 対戦相手 | 経過日数 |
|---|---|---|
| 4/6 | ○○ファイターズ | 109 |
| 4/13 | △△ベアーズ | 102 |
| 4/20 | □□イーグルス | 95 |
| … | … | … |
C列(経過日数)に入れる式はこうなります。
=TODAY()-B2
これで「今日の日付から試合日を引く」という計算が実行され、その試合から何日経ったかが数値で求まります。この式はシートを開くたびに自動で再計算されるため、日付を手動で更新する必要はありません。
経過日数を表示したいセル(例:C2)をクリックして選択します。
「=TODAY()-」まで入力したら、試合日が入っているセル(B2)をクリックします。自動で「=TODAY()-B2」という式が組み上がります。
式を確定した直後は日付形式で表示されることがあるため、その場合はメニューから「表示形式」→「数値」に変更します(詳しくは次の章で解説します)。
しくみを理解する:TODAY・NOWは何をしているのか
TODAY関数・NOW関数は「揮発性関数」と呼ばれる種類の関数です。他の関数のように一度計算したら値が固定されるのではなく、シートを開いたとき・どこかのセルを編集したときなど、再計算が走るたびに、その時点のパソコン(またはGoogleのサーバー)の日時を毎回取り直しています。
- TODAY()は時刻の情報を持たず、常にその日の0時0分0秒として扱われる
- NOW()は時・分・秒まで含んだ値を返すため、同じ日でも呼び出すタイミングによって値が変わる
- スプレッドシート内部では日付は「シリアル値」という通し番号の数値として管理されており、TODAYやNOWもこのシリアル値を返している。日付同士の引き算(=TODAY()-B2)ができるのはこのため
よくあるミス:経過日数が変な表示になる原因
「=TODAY()-B2」の結果が、数字ではなく見慣れない日付になって驚いた、というときの原因の多くは次のどちらかです。
日付同士の引き算をすると、結果セルの表示形式が自動的に「日付」に設定されてしまうことがあります。「1900/2/13」のような意味不明な日付が表示された場合は、そのセルを選択し、表示形式を「数値」に変更してください。中身の数値自体(経過日数)は正しく計算されています。
「入力した日時をログとして残したい」という目的でNOW関数をそのままセルに入れてしまうと、シートを開くたびに値が更新され、実際に入力した瞬間の日時ではなくなってしまいます。記録として固定したい日時には、TODAY・NOWの結果を「値貼り付け」で数値として固定する、または入力時にショートカットで日付を打ち込む、といった方法を使う必要があります。
- TODAY関数は「今日の日付」、NOW関数は「今日の日付+現在時刻」を返す
- どちらも揮発性関数で、シートを開いたり再計算が走るたびに値が更新される
- 日付の引き算結果が日付形式で表示されてしまう場合は表示形式を数値に変更する
- 入力した瞬間の日時を記録として残したい場合は、TODAY・NOWをそのまま使わず値を固定する工夫が必要
次回予告
次回のテーマは「DATEDIF関数」です。2つの日付の差を年・月・日単位で計算する仕組みを、シーズン開始からの経過日数集計を例に解説していきます。
▶︎ 次回:DATEDIF関数の使い方としくみ



コメント