【初月無料キャンペーン中】gooドクター

B列とC列に時間が入っています。
(例)
A列、B列、C列、D列
Aさん、9:30、9:18、〇
Bさん、9:30、10:05、×
Cさん、9:30、8:42、×
Dさん、9:30、9:31、〇



B列は自己申告の時刻、C列は実際の打刻の時刻です。
自己申告と実際の差が30分以内かどうかで判定したいのですがどんな式でできますでしょうか?
早くても遅くても構いません。

gooドクター

A 回答 (6件)

お礼のコメントを見て、回答をもう一度見直したら、数式にダブルコーテーションが一つもれていることに気づきました。



正しくは、

=IF(MIN(ABS(B1-C1),ABS(1-ABS(B1-C1)))*60*24<=30,"〇","×")

です。
訂正してお詫び申し上げます。
    • good
    • 0
この回答へのお礼

わざわざありがとうございます。
ダブルクォーテーションの漏れは、すぐに気づいて自分で補ってました(笑

お礼日時:2021/04/18 08:11

>自己申告と実際の差が30分以内かで判定したい



ということなので「30以下ならOK(=〇)」とする数式は、午前0時をまたぐことがあってもよいように、D1に

=IF(MIN(ABS(B1-C1),ABS(1-ABS(B1-C1)))*60*24<=30,"〇,"×")

を記述し、下方向へオーフィル等でコピーすればよいと思います。
    • good
    • 0
この回答へのお礼

絶対値を使ってシンプルな式で分かりやすいです。
ありがとうございました。

お礼日時:2021/04/17 19:07

No3です。


先の回答では、午前0時(24時)を跨いだ時は、正しくない結果になります。
例えば、B列が、23:59で、C列が0:01の場合は、差が2分なので
期待値として”○”になると思いますが、先の回答では、23:58の差となり、
"×"になります。

この場合でも正しく表示したい場合は、0時を跨いでいるかの判定を
行ってください。
    • good
    • 0

Aさんが1行目


Bさんは2行目


として、
E1に=(B1-C1)*24 と記入して、セルの書式設定を「標準」にする。
そして、D1には、=IF(E1>0.5,"×",IF(E1<-0.5,"×","○"))と
記入する。
E1には、B1とE1の差でB1が1時間遅い時に0.5となり、
1時間早い時は-0.5となるので、0.5より大きい又は、
-0.5より小さい時が30分以内ではないので、
2つのif分で”X”を表示する。

D列、E列には、D1、E1からコピペする。
    • good
    • 0
この回答へのお礼

細かい部分まで考慮していただき
ありがとうございました。

お礼日時:2021/04/17 19:06

こんばんは



B列、C列ともシリアル値(エクセルの時刻型の値)としてよいのなら、差を30分と比べればよいので、例えばD1セルに
 =IF(ABS(B1-C1)>1/48,"×","〇")
を入力して、下方にフィルコピーでいかがでしょうか?

※ 30分丁度の差をどちらにするのか不明なので、微調整してください。
    • good
    • 1

こんにちは


関数をよく知らないのですが、
TIME(HOUR(B1),MINUTE(B1)+30,SECOND(B1)+1)<C1 みたいに上限をTIME関数で時、分、秒を出して、加減も同様に IF ORで比較すれば出来ると思います。
=IF(OR(上限)<C1,TIME(下限)>C1),"×","〇") 
秒を出さずに<=C1が正しいのかもしれませんが、それは、検証してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2021/04/17 19:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング