Excelで勤務時間や作業時間を管理するとき、例えば指定の時間を超えたら「遅刻」と表示させたい場面があるかと思います。
しかし、IF関数で時間を比較しようとすると、正しく表示されないことがあります。
この記事では、Excelで時間を正しく比較する方法を解説します。
時間を扱う上で重要なポイントを押さえて、ミスを防ぎましょう!
目次
時間をIF関数で比較できない原因
Excelでは、時刻を数値として計算する際、シリアル値という形式で扱います。
例えば、9:00は0.375というシリアル値として認識されています。
そのため、IF関数で単純に"9:00"と入力すると、Excelはこれを文字列として認識し、正しく比較できないのです。
方法1:数値に変換して比較する
▼ 正しく比較できない例
以下の数式では、遅刻と表示されません。
=IF(B3>"9:00","遅刻","")
原因:"9:00"が文字列として認識されているため、比較できない。

▼ 正しく比較できる数式
次のように、"9:00"に1を掛けて数値に変換すればOKです。
=IF(B3>"9:00"*1,"遅刻","")
🔍 ポイント
- "9:00"*1:これによりシリアル値に変換され、正しく比較できるようになります。
- 数式をコピーしてオートフィルすれば、他のセルにも適用可能です。


方法2:TIME関数を使って比較する
もう1つの方法として、TIME関数を使って時間を指定する方法があります。
TIME関数は「時」「分」「秒」をそれぞれ指定して、正しく比較できるようにします。
▼ 数式の書き方
=IF(B3>TIME(9,0,0),"遅刻","")
📌 TIME関数の構文
=TIME(時, 分, 秒)
🔍 ポイント
- 24時間を超える時間は扱えないので注意が必要です。
- 「9:00」をTIME関数で表現することで、Excelが時間として正しく認識します。


どちらの方法が良い?
- 計算のシンプルさを重視するなら、"9:00"*1の方法
- より正確に時間を指定したい場合は、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))), "範囲内", "範囲外")
まとめ
- IF関数で時間を比較する際、「9:00」と直接書くと文字列として扱われ、正しく動作しない。
- "9:00"*1と書くことで、シリアル値として認識されるため、正しく比較できる。
- TIME関数を使うことで、より明確に時間を指定できる。
Excelで時間を扱うときには、シリアル値を意識することが大切です。
IF関数で時間を正しく比較して、勤務管理や遅刻判定をスムーズに行いましょう!
