[Excel]日付データについて

記事
学び
こんにちは。かづきchanです。

今回は、スケジュール表などを作成する時に必ず出てくる「日付」に関して、様々な計算などに関わってくる”基本”を紹介したいと思います。

※その他スケジュール作成関連は、下記の記事にまとめています。

■基本

「今更」と感じる内容も含まれているとは思いますが、まずは日付に関するデータとしての”基本”を押さえておきましょう。

【1】「今日の日付」を”入力”したいならショートカットキー

今日の日付は、[Ctrl]+[;]キーの同時押しで入力できます。

単なるショートカットキーの一部ですが、何かと”今日の日付”を入力する機会もあると思いますので、[Ctrl]+[;]キーの同時押し、覚えておいて損はないです。
あとは、[Ctrl]+[:]キーの同時押しで現時点の時刻が入力されます。

日付と時刻両方を1つのセルに入力したいなら、[Ctrl]+[;]を押して日付を入力した後、一旦キーから指を離し、スペースキーを押して空白を入力してから、[Ctrl]+[:]キーを押して時刻を入力します。
・・・・なんというか、アナログ感は否めませんが致し方なし。

ちなみに入力中、スペースキーで入力した空白が全角で表示されていたとしても、最終的には「日付&時刻」のデータとして判断してくれますので、半角スペースぐらいの幅に変わってくれます。

尚、ショートカットキーで入力される日付や時刻は、”入力”されている状態なので、日付や時刻がかわってから見ても、変化はしません。

【2】自動で変わる「今日の日付」を”表示”したいなら関数

請求書など、ファイルを開いた時点の”今日の日付”を自動的に表示させたい場合は、表示させたいセルに「=TODAY()」と入力します。
()の中に何も書いていないと不安になるかも知れませんが、これでOKです。

現時点の日付&時間は、「=NOW()」を入力すれば「2021/5/1 12:00」と表示されます。

現時点の時間は・・・単体での関数はないので下記の方法等をとります。
◆方法1
「=NOW()」を入力してから、
右クリックまたは[Ctrl]+[1!ぬ]キー(テンキー不可)で、セルの書式設定の表示形式を開き、「h:m」「h:m:s」などを設定する。
※時刻だけの表示になりますが、実際は日付データも入っている状態です。
◆方法2
「=NOW()-TODAY()」や、「=TIMEVALUE(TEXT(NOW(),"hh:mm:ss"))」などを入力してから、上部メニューで「時刻」書式に変更する。
※こちらの方法は”今日の日付”データは入っておらず、単純な時刻データです。正確に言うと「1900/1/0」の日付データとして入っています。
◆方法3
方法2のやりかたで、書式変更するのが気に食わない場合は、さらにTEXT関数で括ってしまえばいいでしょう。
「=TEXT(NOW()-TODAY(),"hh:mm:ss")」
「=TEXT(TIMEVALUE(TEXT(NOW(),"hh:mm:ss")),"hh:mm:ss")」

TODAY関数では、”入力”しているわけではなく”表示”しているだけです。
エクセルブックを開いた時点や[F9]キーなどで更新を行った時点の日付が表示され、日付をまたげば自動的に翌日の日付が表示されます。
NOW関数も同様のタイミングで表示内容が更新されます。

【3】日付データには、「年」「月」「日」が含まれる

セルに日付(月日)を入力するつもりで「5/1」と書いてみます。
日付入力.jpg
すると、上記画像のように、セル上は「5月1日」と表示されますが(設定などにもよります)、数式バーを確認すると「2021/5/1」と、入力した時点の年であると判断されて、自動的に「年」も入っていることがわかります。

【4】年「Y」「Year」/月「M」「Month」/日「Day」「D」

西暦で利用する場合、割と英語表記そのままですが、関数や書式設定などで基本的に、年は「Year」か「Y」、月は「Month」か「M」、日は「Day」か「D」が使われます。(小文字でもokです。)

例えば関数でいえば、「Year関数」「Month関数」「Day関数」というものがありますが、これは日付データからそれぞれ、「年」「月」「日」の数字だけを取り出す関数となっています。
例)A1セルに「2021/5/1」、B1セルに「=Year(A1)」と書くと、「2021」と結果が返ってきます。(ちなみに空白だと「1900」が返ります。)

書式設定(ユーザー定義)でいえば、「2021/5/1」と入力した)セルがあったとして、各設定に対して下記の表示になります。
yyyy/m/d → 2021/5/1
yy/mm/dd → 21/05/01
m月d日 → 5月1日
d → 1 (狭い幅で使えるので、横型スケジュール向き)

※以下、ExcelPediaからの一部引用です。
yy    00~99(西暦年の下二桁を表示)
yyyy   1900~9999(西暦年の四桁を表示)

m    1~12
mm   01~12(二桁表示)
mmm  January ~ December(英記表示)
mmmm J ~ D (英記月名の最初の文字)

d    1 ~ 31
dd   01 ~ 31(二桁表示)
ddd   Sun ~ Sat(英記曜日)
dddd  Sunday ~ Saturday (英記曜日)

g    M、T、S、H(元号アルファベット)
gg   明治、大正、昭和、平成(元号二文字)
e    1~99
ee   01~99
※元号を使用する場合の年表示は西暦年表示用の「y」を使用しないようにしますで
※上記のデータは古いようで載っていませんが、「令和」「R」も対応しています。使っているPCで令和が反映されない場合は、インターネットにつないだ状態で、Microsoft Office(Excel、Word、Outlookなど)のアップデートを行いましょう。

ちなみにユーザー定義のパターンなどは、全種類を全部覚える必要はないと思います。「y」「m」「d」「g」「e」の文字だけ覚えて、実際に反映された内容を確認しつつ、後は適当に増やしたり減らしたりしてみればOKです。

【5】数字の「1」=1日分(24時間)として計算される

例えば、C1セルに「2021/5/1」、D2セルに「1」と入力して、C1セルとD2セルを単純に足してみます。
1は1日.png
すると、上記画像のE1セルのように1日後の日付(2021/5/2)と表示されることが分かります。これは、日付計算をする時に必要な知識となります。

【6】日付「1900/1/1」が数字の「1」として扱われる

セルに「1」と入力して、書式設定を「短い日付形式」に変更してみます。
1を入力.jpg
すると、上記画像のように「1900/1/1」と表示されます。
尚、「24:00」と入力して日付に変更した場合も同じです。

【7】「1900/1/1」より過去は日付データとして存在しない

Excelでは「1900年1月1日」を起点(と言っていいのか・・・?)としているため、それより前の年月日を入力して日付書式に変更しても、かわいそうに「日付」としてまともに扱ってもらえません。

「1900/1/1」と入力したセルから、「1」(1日)を引いてその結果を「短い日付形式」で表示してみると・・・
19900101-1.jpg
「1900/1/0」という、ちょっとおかしな表示になりました。
この計算は、すべて「標準」書式で表示すれば「1-1=0」の状態です。
「1900年1月1日」を起点(と言っていいのか・・・?)
・・・と先ほど、つい疑問形で書いてしまったのは、「1900/1/1」の前の24時間はおまけ(?)で計算できるからです。
ちなみに、このおまけの24時間を使って、基本的な”時間”計算がされている・・・と思っております。(尚、超個人的な見解ですのであしからず。実際どうかは存じませぬ。)

尚、さらに過去だとまともに「日付」として計算してもらえません。
19900101-2.jpg
それどころか、「1899/12/31」と入力して「短い日付書式」に変えても、どうやら「日付」の書式として反映されていません。「1900/1/1」と並べて比較してみると、ちょっと文字の位置が左にずれているのが分かります。
どうやら単純にテキストとして扱われている模様。
かわいそうな過去.jpg
本来なら「1」を足すと「1900/1/1」になるはずが、当然のようにVALUEエラーを返されてしまう始末。
「歴史」などを扱う場合には、当然「1900/1/1」より過去の事も出てきますが、Excelでリスト等を作る場合は、この事についてどうかご注意ください。

■あとがき

今回は、日付データの基本について紹介いたしました。

Excelでは、これらの事を別に知らなくても、問題なくなんとなく使えたりもしますが、日付データ関連でよくわからないトラブルが発生した時や、他の人から渡されたExcelファイルを使って何かをする時など、実際にどういったデータが入っているのかを知る必要が出てきた場合に、何かしら役に立つ時がきっとあると思います。

ブログに書いている内容への感想やご質問等ありましたら、お気軽にメッセージをいただければ幸いです。

※その他スケジュール作成関連やり方は、下記の記事にまとめています。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す