日時データとは
エクセルの日付データは、数値と同様に倍精度浮動小数点です。数値化したものは、シリアル値と呼ばれます。ただし、マイナス値は持てません。整数部分が日付で、小数点以下が時間を表します。
日付
日付は、1900年1月1日を1とし、以後1づつ増えていきます。シリアル値0は、1900年1月0日になってしまうので、1900年1月1日からが有効な日付で、それ以前の日付を表すことはできません。
ただし、存在しないはずの 1900年2月29日 がシリアル値60に割り当てられています。これは、かつてスプレッドシート・アプリでは大ヒットしていたLotus123が抱えていたバグと、データレベルでの互換性をもたせたためなので、1900年の日付を扱う場合は注意が必要です。
時間
時間は、小数点以下で表現されます。1時間は $\frac{1}{24} \fallingdotseq 0.0416666666666667 $ になります。見ての通り、割り切れないので、エクセルの有効桁数15桁で丸められています。
つまり、エクセルは全ての時間を正確に数値化することはできないのですが、できるだけ正しい表示になるよう努力しています。そのおかげで、我々は特に問題なく時間を扱うことができています。
ただし、Open XMLデータとしては、17桁で保存されています。エクセルをデータソースとして他のアプリケーションで利用する場合は注意が必要です。
時間の演算
日付は1~2958465の整数で演算を行う限りでは、特に気をつけることはありません。
しかし、時間については注意が必要です。
下記の表は、A列とB列の2行目と3行目は手入力し、青字は2行目3行目を指定してオートフィルさせたものです。C列で、A列とB列が一致するか判定したところ、1:00:05で不一致になってしまいました。
Open XMLのデータで見ると、以下のように、なっていました。
時間 | 列 | 値 |
---|---|---|
1:00:00 | A | 4.1666666666666664E-2 |
B | 4.1666666666666664E-2 | |
1:00:01 | A | 4.1678240740740745E-2 |
B | 4.1678240740740745E-2 | |
1:00:02 | A | 4.1689814814814818E-2 |
B | 4.1689814814814798E-2 | |
1:00:03 | A | 4.1701388888888885E-2 |
B | 4.1701388888888899E-2 | |
1:00:04 | A | 4.1712962962962959E-2 |
B | 4.1712962962963E-2 | |
1:00:05 | A | 4.1724537037037039E-2 |
B | 4.1724537037037102E-2 |
1:00:00と1:00:01はA列、B列とも手入力なので一致していますが、それ以後は少しづつずれていき、1:00:05で有効桁数の丸めでも補正できな位ほどずれてしまいました。
以上のことから、時間データの演算を重ねるとズレが発生する可能性があることを理解しておいてください。
オプション「1904年から計算する」
「02 - ブック - オプション」参照
コンテンツ
- 雑・Excel入門試論 - 脱VLOOKUPの思考 01 - ブック - 仕様と制限
- 雑・Excel入門試論 - 脱VLOOKUPの思考 02 - ブック - オプション
- 雑・Excel入門試論 - 脱VLOOKUPの思考 03 - ワークシート
- 雑・Excel入門試論 - 脱VLOOKUPの思考 04 - セル - 文字列型
- 雑・Excel入門試論 - 脱VLOOKUPの思考 05 - セル - 数値データ
- 雑・Excel入門試論 - 脱VLOOKUPの思考 06 - セル - 日時データ
- 雑・Excel入門試論 - 脱VLOOKUPの思考 07 - リンクされたデータ型
- 雑・Excel入門試論 - 脱VLOOKUPの思考 08 - セル - 計算式・関数
- 雑・Excel入門試論 - 脱VLOOKUPの思考 09 - セル - 数値の書式設定
- 雑・Excel入門試論 - 脱VLOOKUPの思考 10 - セル - 日付と時刻の書式設定
- 雑・Excel入門試論 - 脱VLOOKUPの思考 11 - セル - 条件付き書式
- 雑・Excel入門試論 - 脱VLOOKUPの思考 12 - テーブル - テーブルの作成と入力規則
- 雑・Excel入門試論 - 脱VLOOKUPの思考 13 - テーブル - ソートとスライサー
- 雑・Excel入門試論 - 脱VLOOKUPの思考 14 - テーブル - 動的配列関数
- 雑・Excel入門試論 - 脱VLOOKUPの思考 15 - Power Query - エクセルのデータを読み込む
- 雑・Excel入門試論 - 脱VLOOKUPの思考 16 - Power Query - 変換
- 雑・Excel入門試論 - 脱VLOOKUPの思考 17 - Power Query - テーブルの結合
- 雑・Excel入門試論 - 脱VLOOKUPの思考 18 パワーピボット - データモデル
- 雑・Excel入門試論 - 脱VLOOKUPの思考 19 パワーピボット - 操作
- 雑・Excel入門試論 - 脱VLOOKUPの思考 20 パワーピボット - 日付テーブル
- 雑・Excel入門試論 - 脱VLOOKUPの思考 21 DAX - コンテキストとイテレーター
- 雑・Excel入門試論 - 脱VLOOKUPの思考 22 DAX - CALCULATE
- 雑・Excel入門試論 - 脱VLOOKUPの思考 23 DAX - タイムインテリジェンス
- 雑・Excel入門試論 - 脱VLOOKUPの思考 24 - ダッシュボード - ピボットグラフ(Pivot Chart)
- 雑・Excel入門試論 - 脱VLOOKUPの思考 25 - ダッシュボードの作成