文書を作成するときには発信の日付を入れることがあります。特にビジネスの場合は、ルールの改廃や適用の有無、お金の計算にも関わるので重要です。Excelで今日の日付を毎日入力するのが面倒だからという理由でショートカットキー(Ctrl+セミコロン;)またはTODAY関数を用いることがあります。
「ショートカットキーを使えば簡単に日付が入力できて便利でしょう~」「TODAY関数を使えば勝手に今日の日付になって便利でしょう~」などと便利なことが強調されることが多いですが、必ずしも便利とは限らないということをしっかりと理解しなければなりません。
- 明日や一昨日の日付はどうするのか?
- 今日の曜日はどうするのか?今年・今月はどうやって表示するのか?
- 請求書の日付がころころ変わってもいいのか?
そこで、今回は、本日の日付を求めるTODAY関数を用いるときの注意点と、TODAY関数を用いた足し算・引き算について出題します。
目次
- 1.TODAY関数と本日の曜日
- 2.現在の年月
- 3.ショートカットキーとTODAY関数の違い
- 4.TODAY関数が良いとは限らない
- 5.TODAYを使った足し算引き算
- 6.TODAYを使った繰り返しの計算
- 7.今日の判定
1.TODAY関数と本日の曜日
問題
現在の日付を入力しなさい。また、隣のセルに曜日を表示しなさい。
解説
現在入力している時点での日付を入力するには、月と日だけ入力すればよいです。
入力している時点での年が自動的に保管されます。
Ctrlキーを押しながら;(セミコロン)を押すと今日の日付が入ります。直接日付を入力するのとCtrl+;で入力するのはまったく同じです。
TODAY関数は現在の日付を求める関数ですが、これもシリアル値です。関数の挿入の画面にも「現在の日付を表すシリアル値を返します」とあります。1900年1月1日からの経過日数を求めて、画面上に「yyyy/m/d」で表示します。
TODAY関数には引数がありません。この画面をそのままOKすれば関数が入ります。
半角で「=today()」と直接入力してもかまいません。
直接入力した場合も、TODAY関数を用いた場合も、標準の表示形式にするとシリアル値になります。
曜日を表示するにはシリアル値が必要です。イコールで参照します。
表示形式を「aaa」または「aaaa」にします。
TODAY関数は数式なので自動再計算されます。したがって、翌日になれば自動再計算によって自動的に翌日の表示になります。
2.現在の年月
問題
現在の年月を表示しなさい。
解説
TODAY関数を入力します。「=today()」と入力したほうが早いです。
表示形式を年月にします。日にちが非表示になりますが、セルに保存されている値はシリアル値(整数値)です。
TODAY関数なので、月をまたがったら自動的に変わります。
ユーザー定義の表示形式で、「yyyy」「m」「ggge」などとすれば年や月をそれぞれ表示することも可能です。年・月・日を非表示にしても、セルに保存されている値はシリアル値(整数値)です。関数なので年や月が変われば表示も自動的に変わります。
3.ショートカットキーとTODAY関数の違い
問題
直接入力した場合とTODAY関数を用いた場合の違いを述べなさい。
解説
日付を直接入力してオートフィルをすると1日ずつ増えます。
これに対して、数式はコピーになるだけなのでオートフィルをしても翌日にはなりません。
ショートカットキー(Ctrl+;)で日付を直接入力すると入力した時点の日付が入力され、この日付が変わることはありません。例えば、5月31日に入力すると5月31日の日付が表示されますが、このExcelファイルを使っている最中に日付が変わって6月1日になったとしても5月31日のままです。そして、このファイルを保存して後日開いても5月31日のままです。
これに対して、TODAY()は関数なので、入力している時点ではなく再計算された時点の日付が表示されます。Excelを使用すると常に再計算が行われます。例えば、5月31日にTODAY関数を用いると5月31日の日付が表示されますが、このExcelファイルを使っている最中に日付が変わって6月1日になった場合、自動再計算によって6月1日になります。
このファイルを保存して後日開くと開いた日付に変わります。このように固定の日付を用いるか、TODAYを使うべきかは状況によって判断しなければなりません。
4.TODAY関数が良いとは限らない
問題
次の図でTODAY関数を使うべきか検討しなさい。
解説
今日の日付だからと言ってなんでもかんでもTODAY関数を使えばいいというものではありません。TODAY関数は常に再計算されることに注意しなければなりません。
例えば、「~月~日現在」で集計した場合、集計した日が変わってはいけません。集計した日が保存されなければならない場合、TODAY関数を用いてはいけません。原則として日付は直接入力するべきです。
また、請求書や業務日報のように毎日使用するExcelファイルで、TODAY関数を用いることが考えられますが、再計算によって日付と内容が合わなくなることに注意しなければなりません。
一度発行した請求書の日付を絶対に変えてはいけません。この場合は、別の場所に値で貼り付けをしてTODAY関数を消して、日付を保存しなければなりません。
「大会まであと何日!」「本日は大会何日目!」など、表示している時点を日付を用いて計算し、日付を保存する必要が無いことが明らかな場合に限り、TODAY関数を用いるべきです(後述)。
5.TODAYを使った足し算引き算
(1)昨日の日付と明日の日付
問題
TODAY関数を用いて、昨日の日付、明日の日付を求めなさい。また、100日前、100日後を計算する数式を述べなさい。
解説
TODAY関数は本日の日付をシリアル値として返す関数です。したがって、足したり引いたりすることも可能です。
「=TODAY()-1」で昨日の日付、「=TODAY()+1」で明日の日付になります。
- 一昨日・・・=TODAY()-2
- 昨日・・・=TODAY()-1
- 明日・・・=TODAY()+1
- 明後日・・・=TODAY()+2
100日前は100を引きます。100日後の場合は、100を足します。
- 100日前・・・=TODAY()-100
- 100日後・・・=TODAY()+100
これらは日付が保存されないTODAY関数を用いているので、翌日にこのExcelファイルを開くと、日付が更新されます。
(2)今日で何日目か
問題
セルB1に生年月日を入力した。TODAY関数を用いて、今日で生まれて何日目かを計算しなさい。
解説
生年月日を入力した場合、今日の日付TODAY()から生年月日を引けばその間の日数を計算することができます。
- =today()-B1
このとき日付の表示形式になった場合は、標準の表示形式にします。
(3)残り日数
問題
イベントの開始日が2022/1/15とする場合、TODAY関数を用いて残り日数を求めなさい。
解説
イベント当日の日付が分かっている場合、イベントまでの準備期間として残り日数を求める計算式は、本番当日-今日です。
ダブルクォーテーションで囲んだ日付は、足し算や引き算の計算式の中ではシリアル値として計算されます。「あと何日か」は常に更新されるべき値なので、TODAY関数を用いて計算するべきです。
- ="2022/1/15"-TODAY()
(4)今年あと何日?
問題
TODAY関数を用いて、今年の残り日数を求めなさい。
解説
イベントの最終日が分かっている場合、最終日までの残り日数として「あと何日か」を求める計算式は、最終日-今日+1です。
年の最終日は大晦日なので、「=大晦日-TODAY()+1」となります。
別解
イベントの初日を翌年の元日と考えると、今日から大晦日までの期間がイベントの準備期間にあたります。この場合、イベント初日(元日)から今日の日付を引きます。
「=翌年の元日-TODAY()」となります。
6.TODAYを使った繰り返しの計算
問題
本日を基準として、10日前から10日後までの日付を表示しなさい。
解説
10日前の日付はTODAYから10を引きます。
これをオートフィルしても同じ日付になります。それは数式をコピーしているからです。
1を足します。9日前の日付になります。
これをオートフィルすると1ずつ足されるので連続した日付になります。
別解その1
本日の日付をTODAYで求めます。
1を足して、オートフィルをします。
1を引いて、上向きにオートフィルをします。
別解その2
TODAY関数に加算する日数をあらかじめ入力しておきます。
これをTODAYに加算することによって連続した日付を求めることができます。
表示形式を「0"日後";0"日前";"本日"」とします。
7.今日の判定
問題
セルA1に年月、セルA4以降に日にちを入力した。今日の日付であればTRUE、そうでなければFALSEと表示しなさい。
解説
セルA1に1日の日付を入力します。
イコールで参照します。
1を足してオートフィルをします。
年月の表示形式にします。
表示形式を「d」にします。
日にちはシリアル値なのでTODAYと直接比較することによって、本日であればTRUE、そうでなければFALSEとなります。
これを利用してIF関数や条件付き書式の条件式として使えます。
解説は以上です。