1/05/2021

Excel。IF関数。時間の判定はセル番地をつかうことをおススメします。【TIMEVALUE】

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は少々トラブルケースが発生しやすいので、気を付ける必要がありますね。