エクセルで時間計算(足し算・引き算)がうまくできない

よくあるトラブル対処

エクセルで時間計算したら結果がおかしい

エクセルで時間を計算したら、思った結果と全然違った・・・なんて時ありませんか?

例えば、10時+10時を計算したら、1051964時になるような。

とにかく表示だけさっさと直したい

書式設定を直しましょう。

何十万時間、何百万時間となっている場合、大抵はここを直せば解決します。

書式設定→ユーザー定義→種類の[h]をhに変える。

もしくは、書式設定→時刻→好きな表記を選ぶ。

とりあえず印刷したりする分には、これで解決となりますが、できればこうなったのか、理由を勉強してみてください。

なぜこうなるのか

まずこれを覚えてください。

・エクセルの日付は、本当の姿は整数である
・エクセルの時刻は、本当の姿は小数である
・エクセルの日付と時刻は、1900/1/0 00:00:00が最小である
要するに、ただの数値を、エクセル君が読みかえて、日付や時間で表示しているだけなんです。

そして1900/1/0 00:00:00からカウントされているので、実際の例をあげてみると

1900/1/0 00:00:00 = 0
1900/1/1 00:00:00 = 1
1900/1/2 00:00:00 = 2
1900/1/2 12:00:00 = 2.5
1900/1/3 00:00:00 = 3
1900/1/3 12:00:00 = 3.5
・・・
2020/1/1 00:00:00 = 43831

このように、現在の時間まで、単純に数字を増やしているだけなんです。

それを踏まえて、なぜ10時+10時=1051964時になったのかを紐解いでいきましょう。

10時+10時=1051964時?

まず、見た目上は10時+10時ですが、書式設定のせいで隠れているだけで、実際には日付の情報ももっています。

セルに直接10:00と入力した場合は、エクセルが1900/1/0 10:00:00と判断するのですが、外部からコピーしてきた場合などは、いつの10時なのか、見た目ではわからないんです。

そして、答えの桁がおかしいということは、少なくとも片方は、1900/1/0 10:00:00ではないという事がわかります。

正体を暴く方法は簡単で、10時となっているセルを選択した状態で書式設定の画面を開きましょう。

そして分類から標準を選ぶと、右にサンプルに本当の姿が見えてきます。

これが0.xxxxならば1900/1/0、今回のように大きい数字ならば、他の日付の10時というデータだという事がわかります。
(ちなみに43831.41667は2020/1/1の10時)

こうして確認してみた結果、今回の10時+10時の正体は

1900/1/0 10:00:00+2020/1/1 10:00:00

であることがわかりました。

これを数値になおすと・・・

0.41667+43831.41667(時間部分は、正確には.41666・・・)

となり、答えは43831.83333となり、これは2020/1/1の20時を表す数値になります。

あとはもう書式設定の問題だけになります。

今回1051964時となったもう一つの原因に、書式設定に[h]が使われていたことがあります。

普通のhならば20時と表示されるのですが、カッコ付きのhになると、1900/1/0 00:00:00から純粋に時間をカウントした結果が表示されます。

どういうことかというと・・・

1900/1/0 00:00:00 = 00:00:00
1900/1/1 00:00:00 = 24:00:00
1900/1/2 00:00:00 = 48:00:00
1900/1/3 00:00:00 = 72:00:00
・・・
1901/1/1 00:00:00 = 8808:00:00
・・・
2020/1/1 00:00:00 = 1051944:00:00

ということです。

で、10時+10時=1051964時の話に戻りますが、2020/1/1 00時=1051944時ということは、1051964時=2020/1/1 20時であると逆算することもできるわけです。

まとめると、書式設定で読み替えているだけで、43831.83333=1051964時=2020/1/1 20時ということになりますね!わけわかんねえな!

まとめ

[h]使わなきゃええねん。

 

コメント

タイトルとURLをコピーしました