syokyu:excel_serialval

Excelの日付と時刻

戻る

Excelが日付や時刻を記録する際には、内部で「シリアル値」と呼ばれる値が使われます。

シリアル値を理解しておくと、Excelで日付や時刻の計算をする方法が理解できるようになります。

シリアル値とは

シリアル値は、Excelが日付や時刻を管理するために使っている数値です。その実態は単なる数字なのですが、1900/1/1からの経過日数を表しています。

シリアル値の例

日付・時刻 対応するシリアル値
1900/1/1 0:00:00 1
1900/1/1 12:00:00 1.5
1901/1/1 0:00:00 367
2005/4/10 10:30:35 38452.4379050926

Excel上に日付や時刻を入力した際、内部的には実はこのシリアル値が記録されています。それは以下の操作を行ったときに分かります。

  • 「日付」や「時刻」が入力されたセルに対して「クリア」→「書式のクリア」などで書式を消去すると、このシリアル値が画面に表示されます。
  • 仕組みを知らないと、日付が数値に化けてしまったように見えるので驚きますが、「右クリック」→「セルの書式設定」などで日付タイプの書式を正しく選択すれば、正常な日付表示にもどります。

このように「日付」や「時刻」の実態が「シリアル値」であることが分かります。

Excelの日付や時刻は単なる数値で、書式つまり見た目のデザイン調整によって人間にとって分かりやすいものに変えられているのです。

シリアル値が使われる理由

日付や時刻を「シリアル値」という単なる数値で表現しておけば、足し算や引き算を行って、簡単に日付を使った計算が行なえます。

またその日が何曜日であるかや、うるう年であるかどうかといったことも、特殊な計算で求められます。

計算がしやすいので、シリアル値はExcelにとって都合が良いのです。

日付とシリアル値の関係

日付のルール

Excelの日付は、以下のルールで求められます。

  • 1900/1/1 をシリアル値の 1 とします。
  • そして1日経過する毎にシリアル値も1づつ増やします。
日付 シリアル値
1900/1/1 1
1900/1/2 2
1901/1/3 3
2014/6/23 41,813

日付計算の例

Excel内で行われている、日付を使った計算の例を示します。

日付をシリアル値を使って表現してみます。
例えば 2005/5/102005/4/10 をそれぞれシリアル値に換算すると、38,48238,452 というふうに表されます。

2つの日付の差が何日かを計算したい場合、その2つのシリアル値を単純に引き算すれば求められます。
この例では、 38,482 - 38,452 = 30 なので、2005/5/102005/4/10 の間には30日間の差があることが分かります。

このように日付を足し算・引き算することで、日付を増減させたり、2つの日付間の日数を求めたりできます。

時刻とシリアル値の関係

日付だけでなく、時刻もシリアル値で表せます。

実はシリアル値には少数点以下の値も存在しており、時刻はその小数部分に対応しています。(一方、整数部分が日付と対応しているのは先に述べたとおりです)

つまり「38452.4379050926」のように整数と少数を組み合わせれば、日付と時刻を一度に表すこともできます。

38452.4379050926
↑      ↑
日付   時刻
日付と時刻 シリアル値
2005/4/10 10:30:35 ←→ 38452.4379050926

上の例のシリアル値では、 38452 の部分が日付を、.4379050926 の部分が時刻を表しています。

時刻のルール

Excelの時刻は、以下のルールで求められます。

  • 午前 0時0分0秒 をシリアル値の 0.0 とします。
  • そして、1秒経過するごとに 「86400分の1」(1/86400 ≒ 0.0000115740741 )ずつ増やします。
時刻 シリアル値
00:00:00 0
00:00:01 0.0000115740740740741
00:00:02 0.0000231481481481481
00:00:03 0.0000347222222222222
: :
06:00:00 0.25
: :
12:00:00 0.5
: :
23:59:59 0.999988425925926
24:00:00 1.0
  • 86,400 という値は、1日(24時間)の総秒数が86,400秒であることに由来しています。
    ( 1日 = 24(時間) × 60(分) × 60(秒) = 86,400秒 )
  • 一見複雑ですが、Excel上では「1/86400」に秒数を掛け算すれば、簡単に時刻に関するシリアル値を求められます。

具体例

日付を操作

日付に関しては、1日がシリアル値の「1」に相当するので、必要な日数分だけ足し算・引き算をすることで操作できます。
また2つの日付を単純に引き算すれば差が何日であるかを求められます。

例えば、今日から3日後の日付は、以下のような計算で求められます。

=TODAY() + 3

時刻を操作

時刻に関しては、1秒がシリアル値の「1/86400」に相当するので、必要な秒数に「1/86400」を掛け算することで操作できます。

例えば、今から5時間後の時刻は以下のような計算で求められます。(計算後にシリアル値が表示される場合は、「右クリック」→「セルの書式設定」などで時刻タイプの書式を手動で設定する必要があるかもしれません)

=NOW() + ( 5 * 60 * 60 / 86400 )

応用例

この計算方法を応用して、世界主要都市の現地時間を求めるExcelファイルを作成しました。
参考にしてください。

世界主要都市の現地時間 WorldClock.xlsx

以上です。

戻る

syokyu/excel_serialval.txt · 最終更新: 2023/05/25 19:55 by 127.0.0.1