Excelで時間の比較をIF関数を使用して行おうとしたら、正しく比較することができなくて困ったことはありませんか?
そんな場合どのようにすれば比較できるようになるか解説します。
IF関数で時間の比較ができない
以下の図のような表で、9時を超えたら遅刻と表示するようにIF関数を使用します。
その場合、
=IF(B3>"9:00","遅刻","")
という数式を入れてみたところ正しく比較されず遅刻と表示されません。
この数式で正しく比較できなかった原因は、数式の中で"9:00"と入力しているため、Excelは"9:00"を文字列と扱ってしまったため正しく計算することができませんでした。
これを正しく比較できるようにする方法は、2つありますのでそれぞれ紹介します。
「1」を掛けてシリアル値にする
Excelでは、時刻はシリアル値で計算を行っています。
先ほどの"9:00"をシリアル値にするには、1を掛けてあげればシリアル値になり正しく計算できるようになります。
具体的には先ほどの数式を、
=IF(B3>"9:00"*1,"遅刻","")
のように「"9:00"*1」と修正すれば正しく比較されるようになります。
数式を修正しオートフィルで反映したら正しく計算されるようになりました。
TIME関数を使用する
もう一つの方法として、TIME関数を使用する方法も紹介します。
注意点として、TIME関数は24時間以上の時間は使えないので注意
先ほどの数式をTIME関数を使用して以下のように修正しても計算することができます。
=IF(B3>TIME(9,0,0),"遅刻","")
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は時刻をシリアル値で計算しています。
セルに時刻を入力した場合は自動的にシリアル値になりますが、数式で時刻を入力する場合はシリアル値にしてあげる必要がありますのでご注意ください。