3/06/2025

Excel。時間の大小比較の結果がおかしいんです。どう対応したらいいの。【Comparison】

Excel。時間の大小比較の結果がおかしいんです。どう対応したらいいの。

<IF+TIMEVALUE関数>

次の表は、ランニング成績の表です。

時間の大小比較の結果がおかしいんです。どう対応したらいいの。

C列がスタート時間で、D列には、ゴールした時間が入力されています。


E列には、経過した時間。

=D2-C1

という数式が設定されています。


オートフィルで数式をコピーして、E5まで求めた表です。


そして、F列には、1時間以内なら○と表示する数式を設定してみました。


F2の数式は、

=IF(E2<="1:00","○","×")


オートフィルで数式をコピーしてみると、結果がおかしなことがわかります。


全部「○」になっています。


IF関数をつかっていて、論理式は、「E2<="1:00"」と、「1時間以内なら」という条件にしたはずなのですが、うまくいっていません。


「E2<="1:00"」の「”(ダブルコーテーション)」が邪魔なのかと思い、消した数式、

=IF(E2<=1:00,"○","×")

にしてみると、

エラーが表示されます。


何が原因なのでしょうか。


そこで、数式タブにある、数式の検証をつかって、確認してみましょう。


数式の検証は、数式の途中結果などの状況を確認することができるツールです。


クリックすると、数式の計算ダイアログボックスが表示されます。


検証ボタンをクリックすると、1ステップずつ、計算されます。


時間は、Execlの場合シリアル値に戻りますので、0.05となっています。


検証ボタンをさらにクリックして、進めてみると、

”1:00”は、シリアル値にかわることなく、文字として扱われていることが確認できます。


“1:00”は、文字扱いになっていますから、当然、”1:00”という文字よりも、数値の方が小さい扱いになるので、すべて「○」になってしまったというわけです。


”1:00”をどうにか、時間に変換することができれば、解決できるわけです。


そこで、登場するのが、TIMEVALUE関数です。


まずは、先程の数式に、TIMEVALUE関数を追加して修正してみます。


=IF(E2<=TIMEVALUE("1:00"),"○","×")


オートフィルで数式をコピーしてみると、正しい結果を求めることができました。


このTIMEVALUE関数は、


文字列で表示された時刻をシリアル値に変換してくれる関数です。


もし、時間を使った計算で、結果が正しくない場合には、文字になっていないか、文字になっていたら、TIMEVALUE関数をつかってみて確認してみるといいかもしれませんね。