勤務表やシフト表で「シフト開始時刻」と「休憩(食事)開始時刻」を入力していると、ほぼ同時刻(0〜3分差)で入ってしまう行が混ざることがあります。こうした行だけを自動で見つけて“Review”表示にするために、Excelの時刻計算の考え方から、実務で使いやすい判定式・応用例・よくあるつまずきまでまとめます。
Excelで「2つの時刻の差が0〜3分ならReview」と判定する要件整理
まずは、式に落とし込む前に判定ルールを明確にしておくと、あとで修正が少なくなります。今回の要件は次のとおりです。
| 項目 | 内容 | 例(A=シフト開始 / B=休憩開始) |
|---|---|---|
| 判定対象 | シフト開始時刻(A列)と休憩開始時刻(B列)の差 | A2=09:00、B2=09:02 |
| Review条件 | 差が0〜3分(同時刻も含む) | 0分〜3分 → Review |
| 前提 | 休憩開始時刻(B)がシフト開始時刻(A)より後(または同時刻) | B2>=A2 |
| 表示したい結果 | TRUE/FALSEではなく文字列(“Review”など) | Review / OK / 空欄 |
ここで重要なのは、「ANDだけだとTRUE/FALSEになる」ので、最終的に表示したい文言はIFで返す、という点です。
まず押さえる前提:Excelの時刻は「数値」
Excelの時刻は、見た目は「09:00」のように表示されますが、内部的には「1日=1」とする小数(シリアル値)で管理されています。だから、時刻同士を引き算すると“時間差”が数値として出ます。
| 表示(時刻) | 内部の考え方 | 補足 |
|---|---|---|
| 00:00 | 0 | 1日の開始 |
| 12:00 | 0.5 | 半日=1/2 |
| 1分 | 1/1440 | 24×60=1440分 |
| 3分 | 3/1440 | TIME(0,3,0)でも表せる |
この「分に直すなら×1440」という考え方が、差分表示(“○ min”)にもそのまま使えます。
基本形:0〜3分なら「Review」、それ以外は「OK」
もっともシンプルで、読みやすく、意図が伝わりやすいのが TIME関数で3分を表現するパターンです。A2にシフト開始、B2に休憩開始が入っている想定で、判定結果をC2に出す例を示します。
=IF(AND(B2>=A2,(B2-A2)<=TIME(0,3,0)),"Review: "&TEXT((B2-A2)*1440,"0")&" min","OK")
式の意味を分解すると次のとおりです。
| 式のパーツ | 役割 | 意図 |
|---|---|---|
| AND( … ) | 複数条件をまとめる | 「前提」+「3分以内」を同時に満たすか |
| B2>=A2 | 前提チェック | 休憩開始がシフト開始以降であること |
| (B2-A2)<=TIME(0,3,0) | 差が3分以内か判定 | 0〜3分(同時刻含む)を拾う |
| IF(条件, “Review…”, “OK”) | 表示を分岐 | TRUE/FALSEではなく文字で返す |
| (B2-A2)*1440 | 分へ換算 | 「日」単位の差を「分」に変換 |
この式は、Review対象になったときに「Review: 2 min」のように差分も一緒に表示できるので、確認作業が一段ラクになります(レビューの優先度付けもしやすいです)。
「OK」ではなく空欄にしたい場合
「Reviewの行だけ目立てばいい」「OKは表示しないで一覧をスッキリさせたい」という運用も多いです。その場合は、IFの第3引数(条件に合わないときの表示)を空文字にします。
=IF(AND(B2>=A2,(B2-A2)<=TIME(0,3,0)),"Review: "&TEXT((B2-A2)*1440,"0")&" min","")
これで、問題がある(レビューしたい)行だけに文字が出る状態になります。フィルターで空欄を除外すれば、Review行だけを一瞬で抽出できます。
未入力(空白セル)があるときは空欄にする
実務では、A列やB列が未入力の行が混ざることがよくあります。未入力の行まで「OK」やエラー表示にしたくない場合は、最初に空白判定を挟むと安定します。
=IF(OR(A2="",B2=""),"",IF(AND(B2>=A2,(B2-A2)<=TIME(0,3,0)),"Review: "&TEXT((B2-A2)*1440,"0")&" min","OK"))
この形にしておくと、入力途中の段階でも表が汚れません。現場では「まず空白を弾く」が地味に効きます。
3分ではなく「2分以内」など、閾値を変える方法
「同時刻〜2分はReview」「3分は許容」など、運用ルールが変わることもあります。TIME関数を使っていると、閾値の変更が直感的です。
| 判定したい差 | 条件部分の書き方 | 読み方 |
|---|---|---|
| 0〜1分 | (B2-A2)<=TIME(0,1,0) | 1分以内 |
| 0〜2分 | (B2-A2)<=TIME(0,2,0) | 2分以内 |
| 0〜3分 | (B2-A2)<=TIME(0,3,0) | 3分以内 |
| 0〜5分 | (B2-A2)<=TIME(0,5,0) | 5分以内 |
「3/1440」でも同じことはできますが、TIME(0,3,0)のほうが見ただけで意図が伝わるので、引き継ぎや共同編集があるシートではTIMEがおすすめです。
差分の“分”表示をきれいに出すコツ
差分を分で表示するときに、想定外の小数(例:1.999999)や、秒が混ざった入力(例:09:00:30)が原因で表示がブレることがあります。そういうときは、分換算した値をROUNDで丸めると実務的に扱いやすいです。
分を四捨五入(整数)して表示する例
=IF(AND(B2>=A2,(B2-A2)<=TIME(0,3,0)),"Review: "&ROUND((B2-A2)*1440,0)&" min","OK")
切り捨てで表示する例(“2.9分”でも2分扱いにしたい)
=IF(AND(B2>=A2,(B2-A2)<=TIME(0,3,0)),"Review: "&INT((B2-A2)*1440)&" min","OK")
「判定は3分以内だけど表示は整数分にしたい」という要望は多いので、表示用の丸め(ROUND/INT)を覚えておくと便利です。
ANDだけだとTRUE/FALSEになる理由と、正しい使い分け
「式を入れたらFALSEが出た。失敗?」という相談はよくありますが、AND関数はそもそも 条件を評価してTRUE/FALSEを返す関数です。つまり、ANDだけをセルに入れればTRUE/FALSEが表示されるのが正常です。
| やりたいこと | 使う関数 | 戻り値 |
|---|---|---|
| 条件を満たすか判定したい | AND | TRUE / FALSE |
| 文字を表示したい(Review/OK/空欄) | IF + AND | 文字列(指定した表示) |
| 条件付き書式で色を付けたい | AND(またはOR) | TRUEのときだけ書式適用 |
セルに文字を出すならIF、色を付けるだけならAND(TRUE/FALSE)をそのまま使う、という使い分けが鉄板です。
区切り文字が「カンマ」ではなく「セミコロン」の環境への対応
Excelの地域設定によっては、関数の引数区切りがカンマ(,)ではなくセミコロン(;)になることがあります。その場合は、式のカンマをセミコロンに置き換えます(内容は同じです)。
=IF(AND(B2>=A2;(B2-A2)<=TIME(0;3;0));"Review: "&TEXT((B2-A2)*1440;"0")&" min";"OK")
「式がエラーになるけど、どこが間違いかわからない」というときは、まず区切り文字が合っているかを疑うと解決が早いです。
時刻が計算できない原因は「文字列」扱いになっていることが多い
見た目が09:00でも、入力経路(コピペ、CSV取り込み、外部システム出力)によっては“文字列”として入ってしまうことがあります。文字列のままだと、引き算がうまくいかなかったり、意図しない結果になりがちです。
チェック方法(簡易)
- セルの表示形式を「時刻」にしても見え方が変わらない
- 左寄せになっている(標準設定の場合)
- =ISNUMBER(A2) がFALSEになる
変換方法の例(TIMEVALUEで時刻へ変換)
もしA2やB2が文字列になっているなら、別列で次のように変換してから判定するのが安全です。
=TIMEVALUE(A2)
=TIMEVALUE(B2)
変換後の列(例:A列→D列、B列→E列)を使って、D2とE2で判定式を組むと安定します。CSV取り込みが多い現場ほど、このひと手間が効いてきます。
「休憩開始が翌日」など、日付またぎが混ざる場合の考え方
要件上は「休憩開始(B)がシフト開始(A)より後」という前提ですが、現場のデータは前提どおりに来ないことがあります。特に夜勤や日付またぎがあると、時刻だけ(00:10など)で入力されることで、BがAより小さく見えてしまうケースがあります。
たとえば、A=23:58、B=00:01(実際は翌日)のようなパターンです。時刻だけだと B<A になり、単純な (B-A) はマイナスになります。
日付またぎの差を「0〜24時間の範囲に収める」にはMODが便利
=MOD(B2-A2,1)
MOD(差,1) にすると、差がマイナスでも「1日を法として」正の差に戻せます。これを使って0〜3分を判定する例です(Review対象だけ表示し、未入力は空欄)。
=IF(OR(A2="",B2=""),"",IF(MOD(B2-A2,1)<=TIME(0,3,0),"Review: "&ROUND(MOD(B2-A2,1)*1440,0)&" min",""))
ただし、この式は「23時間50分差」なども正の値として扱うので、運用上“あり得ない差”まで拾う可能性があります。夜勤がある場合は、別途「差が数時間以上なら別エラー」などのルールも併用すると、レビューが現実的になります。
実務で強い:Review行を色付けする(条件付き書式)
「文字を出す」だけでなく、行ごとに色を付けて見落としを防ぐ運用は非常に効果的です。条件付き書式なら、ANDのTRUE/FALSEをそのまま活かせます。
例:行全体を薄い色でハイライトする
- 適用範囲:A2:C1000(必要な範囲)
- 条件付き書式の「数式を使用して…」を選択
- 数式に次を入れる(列固定に注意)
=AND($B2>=$A2,($B2-$A2)<=TIME(0,3,0))
ポイントは、条件付き書式では「Reviewと表示する文字列」は不要で、TRUEになる条件だけを書けばよいことです。これでReview対象行が一目で見えるようになります。
集計・フィルターに強い「判定列」の作り方
レビュー運用を回しやすくするには、表示用の文言を整えるのもコツです。例えば「Review: 2 min」だと人間には親切ですが、集計(COUNTIF)では少し扱いづらいことがあります。その場合は、列を分けると管理がラクになります。
| 列 | 内容 | おすすめ理由 |
|---|---|---|
| C列 | 判定(Review / OK / 空欄) | フィルター・集計しやすい |
| D列 | 差分(分) | レビューの優先度付けができる |
C2:判定だけ(Review / OK)
=IF(OR(A2="",B2=""),"",IF(AND(B2>=A2,(B2-A2)<=TIME(0,3,0)),"Review","OK"))
D2:差分(分)だけ(未入力は空欄)
=IF(OR(A2="",B2=""),"",ROUND((B2-A2)*1440,0))
こうしておけば、例えば「Reviewの件数」なら =COUNTIF(C:C,”Review”) のようにシンプルに集計できますし、ピボットテーブルでも扱いやすくなります。
さらに堅牢にする:エラー処理と“前提崩れ”の見える化
入力ミスが混ざることを前提にするなら、「Review/OK」だけでなく、前提を満たしていない行を別表示にするのもおすすめです。たとえば、休憩開始がシフト開始より前なら “Check” と出すようにすると、データ修正が早くなります。
=IF(OR(A2="",B2=""),"",IF(B2<A2,"Check",""))
上の式は単独でも使えますし、Review判定と組み合わせるなら次のようにできます。
=IF(OR(A2="",B2=""),"",IF(B2<A2,"Check",IF((B2-A2)<=TIME(0,3,0),"Review: "&ROUND((B2-A2)*1440,0)&" min","OK")))
「Reviewにしたい行」だけでなく、「そもそも前提が崩れている行」も見える化できるため、現場のメンテナンス負荷が下がります。
よくある質問:秒が入っていると3分以内なのに漏れる?
例えば、A=09:00:40、B=09:03:50 のように秒まで入っていると、見た目は“ほぼ3分”でも差分は3分10秒になり、(B-A)<=TIME(0,3,0) を満たしません。運用上「分単位で判断したい」なら、差分を分に直して丸めて判定する方法が有効です。
分に換算して四捨五入後、3分以内ならReview
=IF(OR(A2="",B2=""),"",IF(AND(B2>=A2,ROUND((B2-A2)*1440,0)<=3),"Review: "&ROUND((B2-A2)*1440,0)&" min","OK"))
「秒は無視してよい」運用なら、この形が事故が少ないです。逆に「秒まで厳密に管理したい」場合は、TIME(0,3,0)のままが適しています。
最後に:おすすめの結論(迷ったらこれ)
まずは「未入力は空欄」「前提はB>=A」「3分以内はReview」「差分(分)も表示」を満たす形が、現場で最も使われます。迷ったら次の式から始めるのがおすすめです。
=IF(OR(A2="",B2=""),"",IF(AND(B2>=A2,(B2-A2)<=TIME(0,3,0)),"Review: "&ROUND((B2-A2)*1440,0)&" min","OK"))
運用ルールが変わったら、TIME(0,3,0)の「3」の部分を調整するだけで柔軟に対応できます。さらに見落とし対策が必要なら、条件付き書式で同じ条件を使って色付けするのが効果的です。

コメント