Excelは日付をシリアル値で管理している。シリアル値とは日付を数値に置き換えたもので、1900年1月1日が「1」になる。以下、1900年1月2日は「2」のように、シリアル値が1増えるごとに日付は1日増える(詳しくは、本連載の第5回参照)。

 それでは、日付とも関わりの深い時間はどのように管理されているのだろう。

小数点以下で時分秒を表現する

 Excelは小数点以下のシリアル値で「時」「分」「秒」を表現する仕組みになっている。例えば、セルに「0」「0.25」「0.5」「0.75」「1」と入力し、「ホーム」タブの「数値の書式」の横にある「▼」をクリックして、表示形式を「時刻」に設定する。すると、表示が「0:00:00」「6:00:00」「12:00:00」「18:00:00」「0:00:00」に切り替わる。

 これはどういうことかというと、1日は24時間あり、「0.25」は1日に相当する「1」の4分の1だから「6:00:00」。同じく「0.5」はちょうど半分だから、「12:00:00」になるというわけだ。

 では、「0」と「1」が共に「0:00:00」になるのはなぜだろうか。一見すると同じ数値だが、実は厳密には異なる値だ。「ホーム」タブの「数値」の右にある矢印マークをクリックして「セルの書式設定」ダイアログボックスを開き、「分類」から「時刻」を選ぶ。さらに「種類」から「2012/3/14 13:30」を選択して「OK」ボタンを押してみよう。「0」が「1900/1/0 0:00」であるのに対して、「1」は「1900/1/1 0:00」になる。

 このように、Excelの日付は、1900年1月0日という現実にはあり得ない日付からスタートして、小数点以下の値が増えるにしたがって時刻が進み、さらに日付が増えていくわけだ。

時刻の謎を解明する
時刻は小数点以下のシリアル値によって管理されている。小数点以下を持つ値の表示形式を「時刻」に変えると、時刻を表す「00:00:00」の形式にできる
[画像のクリックで拡大表示]

8時15分23秒と表示する

 「6:00:00」や「12:00:00」など切りのよい時刻だと、小数点以下のシリアル値も分かりやすい。それならば、「8時15分23秒」といった細かい時刻を表示したい場合、シリアル値をどのように算出すればよいのか。

 下図は時刻を累計の秒に換算して、求めたい時刻のシリアル値を計算するための表だ。D2セルの「累計秒」では「24:00:00」の累計秒を計算している。計算式は「=A2*3600+B2*60+C2」とする。つまり24時間を秒に直すと8万6400秒になるわけだ。

 さらにE2セルの「シリアル値」では、「=D2/$D$2」として、8万6400秒に占める割合を計算する。当然、E2は「1」になる。さらに、F2セルの「時刻」は「=E2」として隣のセルを参照し、表示形式を「時刻」に設定する。するとF2は「0:00:00」となった。時刻の「24時」は「0:00:00」だから、表示に間違いはない。

 では、3行目の「時」「分」「秒」にそれぞれ「8」「15」「23」と入力しよう。そうしたら、D3~F3の各セルに、D2~F2の数式をコピーする。そうすると、「8時15分23秒」の「累計秒」は「29723」で、「シリアル値」は「0.344016204」であることが分かる。そして、このシリアル値を「時刻」の表示形式で表すと、確かに「8:15:23」となる。

時刻に対応するシリアル値を算出する
まず、シリアル値を求めたい時刻の累計秒を計算する。次にその値を24時間(8万6400秒)で割り算する。この値が時刻のシリアル値になる
[画像のクリックで拡大表示]

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら