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関数をつかってみて確認してみるといいかもしれませんね。