エクセルで16:20と16:20がイコールになる…と思ったらならない!なぜだ?
ということがありました。
たとえばですね
A列に計算値の時刻(セルA2の時間を基準に5分ずつプラスしていく)
B列にはA列と同じ時刻を手入力します。
C列にA列とB列がイコールだったら「一致」イコールでなければ「不一致」とでる計算式を入れます。
同じ時刻を入れてるんだから全部「一致」でしょ…と思いきや!9:35と10:20が「不一致」とでました!
時刻を数字に直してみると、おお!9:35と10:20の15桁目が違うではないですか!
小数点以下15桁目までしか保持しないみたいですね。で、なんか丸めるときに計算値と手入力では違ってきちゃうことがあるみたいですね。
詳しくはわからないけど、時間計算の時は気をつけろ!ということですね。
で、解決方法としてはいったん文字列にしてその後数値にする、という方法があるようです。TEXT関数で一度9:00:00の文字列にして、Value関数で数値(シリアル値)に戻す。と、あら不思議!不一致だった9:35と10:20も一致になりました!
ちなみにTIME関数に時、分を入力する方法では誤差は出ませんでした。
足したり引いたりする計算だと誤差が出るのかもしれないですね。
ちなみに時刻はエクセルではシリアル値で扱われています。
シリアル値とは日付や時刻を扱うための…なんだ?ルール?
日付は1900/1/1を1として、1900/1/2は「2」、1900/1/3は「3」
今日の日付2021/11/21は「44521」。つまり1900/1/1から44,521日目ということです。
書式が日付になっているときに0値が「1900/1/0」となるのは1900/1/1が1だからです。
マイナス値は「#####」となります。日付にマイナスなんて知らん、とエクセルから拒否られます。
時刻は0が0:00:00、1日24時間が1となり、その間の時刻は少数になります。
12:00:00 は 0.5、6:00:00 は 0.25、18:00:00 は 0.75
23:59:59 は 0.999988425925926…
で、24:00:00で1となり、日付が1繰り上がる、というわけですね。
計算値と入力値で時刻に誤差が出るとは知りませんでしたので、勉強になりました。
お読みいただきありがとうございました!
時間・日付関係はこちらもどうぞ!
コメント