6/01/2016

Excel。TIMEVALUE。IF関数で時間内かどうかの判断をしたら、おかしな結果になるのでどうしよう。


Excel。IF関数で時間内かどうかの判断をしたら、おかしな結果になるのでどうしよう。

<IF+TIMEVALUE関数>


MOS(マイクロソフト オフィス スペシャリスト)の試験を受けるときには、
その模擬問題をやってから挑戦していただくのですが、
その模擬試験の管理する表を作成していて、
模擬試験時間内に終わったのかどうかの判断をしようとしたら、ちょっと苦労するのと、
さらに判断がおかしいし…

ということで、

今回は、時間内なのか?
それとも、タイムオーバーなのか?を判断する表を作るときの注意点を書いていきます。

では、下記の表があります。

このように作りたいわけですね。

F列は、E列の所要時間と比べて、50分以内なら、時間内。
そうでなかったら、タイムオーバーと表示する数式をF列に作っております。

では、F5をクリックして、IF関数ダイアログボックスを表示しましょう。

論理式には、50分以内なので、E5<=0:50 なんか、正しくありません。と表示されていますが、
先へいきましょう。
真の場合には、”時間内”
儀の場合には、”タイムオーバー”
として、OKボタンを押してみると…

エラーとなりましたね。

数式には、直接時刻を入力することが出来ないので、正しくないとExcelがいってきた訳ですね。

では、どうしたらいいのか?というと、
”0:50”とダブルコーテーションで囲んであげる必要があります。

そうすることで、文字型になるので、数式で使うことが出来るのです。

ですので、論理式を、E5<=”0:50”と修正してみましょう。

数式は、
=IF(E5<="0:50","時間内","タイムオーバー")
となりますので、オートフィルを使って数式をコピーします。

これで完成。と思ったら…。

なんと、全部判断が時間内になっているではありませんか!
50分以内なはずなのに?

この原因は、先ほどのダブルコーテーション。
これを付けたら文字になったわけですよね。

E列の数値よりも当然大きいわけですね。

E5は、0:49と49分に見えますが、実際のデータとしては、0.0340278 ですから。

つまり1以下。

当然文字よりも小さい数値なので、”時間内”という結果が算出されるというわけです。

では、どうしたらいいのでしょうか?
そこで登場するのが、救世主。

TIMEVALUE関数

なのです。

この関数は、文字列になっている時刻を、本来の時刻に変換してくれる関数なのです、
しかも表示は時刻表示形式にしてくれるのです。

つまり、時間どうし比較できるようになるのです。

では、数式を修正していきましょう
F5の数式

=IF(E5<="0:50","時間内","タイムオーバー")

=IF(E5<=TIMEVALUE("0:50"),"時間内","タイムオーバー")

と修正して、オートフィルで数式をコピーしてみましょう。

今度は、ちゃんと、判断されて、タイムオーバーが表示されましたね。

このように、時間をつかった比較判断の場合には、
TIMEVALUE関数を使ってあげるといいかもしれませんね。