Excel。IF関数。時間の判定はセル番地をつかうことをおススメします。
<IF関数・TIMEVALUE関数>
オリンピック予選や国体など予選タイムというのがあったりして、それを突破しないと上位進出できません。
そこで、予選突破タイムを越えたら人がわかる表を作りたいとします。
それが、次の表。
ある大会の予選突破確認の表で、B列の時間が参加者の時間です。
その時間がB1の予選クリア時間よりも少なければ「突破」と表示しています。
C4の数式を確認してみましょう。
=IF($B$1>B4,"突破","")
設定した数式をオートフィルで数式をコピーしていますが、特に問題はありません。
この場合、セル番地をつかった比較をしていますよね。
何気ないことですが、B1を使用せずに、
=IF(0:15:30>B4,"突破","")
と、直接手入力で論理式をつくってみると、トラブルが発生します。
では、試しに、D4に
=IF(0:15:30>B4,"突破","")
という数式を設定してみましょう。
ある動きが見えるので、できれば、数式は手入力で作成してみるといいですよ。
入力途中で、「0:15:30」と入力したら、範囲選択し始めましたが、そのままIF関数を作っていきます。
そして確定すると…メッセージが表示されます。
どうやら、先程の「0:15:30」は、15行目から30行目を範囲選択と勘違いしたようです。
ならば、「””」(ダブルコーテーション)で囲ってみましょう。
=IF(“0:15:30”>B4,"突破","")
メッセージは表示されなかったので、オートフィルで数式をコピーしてみると、算出できていないことが判明します。
なんと、すべてに「突破」という文字が表示されてしまいました。
その原因は、"0:15:30"。
「””」(ダブルコーテーション)をつけたことで、文字型と判断されてしまいます。
B列は、時間=数値(シリアル値)なので、文字と数値を比べると当然、数値は小さいので、条件が成立してしまったわけです。
このようなことから、セル番地に比較したい時間を設定しておき、IF関数などを使うと、簡単に判定することができるわけです。
なお、どうしても、セル番地が使えない場合などがある時には、TIMEVALUE関数を使うことで、対応することが可能です。
D4の数式を修正します。
=IF(TIMEVALUE("0:15:30")>B4,"突破","")
オートフィルで数式をコピーしてみましょう。
このように、セル番地を使った場合と同じように、判定結果を算出することができました。
このTIMEVALUE関数。一つだけ注意点があります。
それは、引数。「かっこの中」。
「時刻文字型」と指示されていますので、「””」(ダブルコーテーション)で時間を囲ってあげる必要があります。
時間や日付について、Excelは少々トラブルケースが発生しやすいので、気を付ける必要がありますね。