Excel

ExcelのIF関数で時間の比較ができないときの原因と解決方法

2023年12月12日

Excelで時間の比較をIF関数を使用して行おうとしたら、正しく比較することができなくて困ったことはありませんか?

そんな場合どのようにすれば比較できるようになるか解説します。

記事内容

今回は、ExcelのIF関数で時間の比較ができないときの原因と解決方法を紹介します。

IF関数で時間の比較ができない

以下の図のような表で、9時を超えたら遅刻と表示するようにIF関数を使用します。

その場合、

=IF(B3>"9:00","遅刻","")

という数式を入れてみたところ正しく比較されず遅刻と表示されません。

9時を過ぎているのに遅刻と表示されない
9時を過ぎているのに遅刻と表示されない

この数式で正しく比較できなかった原因は、数式の中で"9:00"と入力しているため、Excelは"9:00"を文字列と扱ってしまったため正しく計算することができませんでした。

これを正しく比較できるようにする方法は、2つありますのでそれぞれ紹介します。

「1」を掛けてシリアル値にする

Excelでは、時刻はシリアル値で計算を行っています。

先ほどの"9:00"をシリアル値にするには、1を掛けてあげればシリアル値になり正しく計算できるようになります。

具体的には先ほどの数式を、

=IF(B3>"9:00"*1,"遅刻","")

のように「"9:00"*1」と修正すれば正しく比較されるようになります。

時間に「1」を掛ける
時間に「1」を掛ける

数式を修正しオートフィルで反映したら正しく計算されるようになりました。

正しく表示されるようになった
正しく表示されるようになった

TIME関数を使用する

もう一つの方法として、TIME関数を使用する方法も紹介します。

注意点として、TIME関数は24時間以上の時間は使えないで注意

先ほどの数式をTIME関数を使用して以下のように修正しても計算することができます。

=IF(B3>TIME(9,0,0),"遅刻","")

TIME関数の書式は、

=TIME( 時 , 分 , 秒 )

になります。

TIME関数を使用して時刻を指定
TIME関数を使用して時刻を指定

数式を修正しオートフィルで反映したら正しく計算されるようになりました。

TIME関数を使用しても計算できる
TIME関数を使用しても計算できる

よくある質問 (FAQ)

Q1: IF関数で「開始時間から終了時間まで」の範囲を判定するにはどうすれば良いですか?
A1: 複数条件を扱うために、AND関数を組み合わせて条件を指定してください。例: =IF(AND(A1>=TIME(8,0,0), A1<=TIME(17,0,0)), "範囲内", "範囲外")

Q2: セルに入力した時間が比較で正しく機能しません。何が問題ですか?
A2: セルの値が「時刻」ではなく「文字列」になっている可能性があります。セルのデータ形式を「時刻」に変更するか、文字列をTIMEVALUE関数で変換してください。

Q3: IF関数で比較した時間が同じ場合、特定の値を返す方法はありますか?
A3: =を使って比較条件を指定します。例: =IF(A1=TIME(9,0,0), "同じ", "異なる")と記述してください。

Q4: 時間比較にエラーが発生するのは、データが異なるシステム(例えばインポートしたデータ)の場合です。解決方法は?
A4: インポートされたデータは文字列として扱われることが多いため、TIMEVALUE関数で時刻形式に変換してから比較してください。

Q5: 複数の時間範囲に条件分岐を設定するにはどうすればいいですか?
A5: ネストしたIF関数やIFS関数を使うと簡単です。例: =IFS(A1<TIME(9,0,0), "早い", A1<TIME(17,0,0), "通常", TRUE, "遅い")

Q6: 1日の中で複数の「開始時間」と「終了時間」の範囲を比較するにはどう設定すればいいですか?
A6: 複数条件を扱うにはANDまたはOR関数を使用します。例: =IF(OR(AND(A1>=TIME(9,0,0), A1<TIME(12,0,0)), AND(A1>=TIME(13,0,0), A1<TIME(17,0,0))), "範囲内", "範囲外")

まとめ

Excelは時刻をシリアル値で計算しています。

セルに時刻を入力した場合は自動的にシリアル値になりますが、数式で時刻を入力する場合はシリアル値にしてあげる必要がありますのでご注意ください。

Excel関数の記事一覧はコチラ

検索

-Excel
-, ,