- ベストアンサー
関数の事に関する質問 - 出勤時間と退社時間に応じた深夜判定の方法を教えてください
- 質問内容: 下のような書式があるのですが、A列の出勤時間が5:00前の時(4:50や2:00等まちまち)退社時刻が22:00を過ぎた時に深夜判定 C列に1と入力するのですが、 C列のセルに IF関数や COUNTIF等でチャレンジしてみましたが、A列B列にデーターが無い時の処理が、上手くいきません 良い方法を教えてください。
- 出勤時間が5:00前かつ退社時刻が22:00を過ぎた場合に、C列に1と入力する方法が知りたいです。A列とB列にデータが無い場合の処理も教えてください。
- A列の出勤時間とB列の退社時刻を元に、深夜判定(C列に1を入力)を行いたいです。A列が出勤時間、B列が退社時刻で、A列の時間が5:00前でかつB列の時間が22:00を超えた場合に、C列に1を入力する方法を教えてください。また、A列とB列にデータが無い場合の処理もお願いします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
>もう1度 おねがいしたいのですが、 IFの条件式が時間単位の整数のため計算誤差が生じたようです。 見方を変えて2通りの関数を提案します。 fx=IF(AND(A2>TIMEVALUE("4:59"),B2<TIMEVALUE("22:01")),,IF(A2=0,,IF(B2=0,"",1))) fx=IF(OR(AND(0<A2,A2<TIMEVALUE("5:00")),B2>TIMEVALUE("22:00")),1,"")
その他の回答 (8)
- Baku7770
- ベストアンサー率37% (110/292)
No.1です。補足に対しコメントします。 countblankは文字通り空白をカウントする関数です。 countblank(範囲)が使い方です。ご質問の場合だと、 countblank(c1:c1000)-countblank(a1:a1000)でA列が空白でなくc列が空白の数が出ます。 A列B列片方が空白の場合をどうするかという処理も必要なんじゃないですか?
- bunjii
- ベストアンサー率43% (3589/8249)
条件によって誤りが出ましたので再度の訂正です。 Fx=IF(AND(HOUR(A2)>5,HOUR(B2)<22),,IF(A2=0,,IF(B2=0,,1))) IF文の正に未定義の場合は0が与えられます。 0でなく空白にしたいときは正のとき""として下さい。 Fx=IF(AND(HOUR(A2)>5,HOUR(B2)<22),"",IF(A2=0,,IF(B2=0,"",1)))
お礼
何度も、お付き合いいただき 恐縮ですが、 退勤22:00から C列に 1 で無く、 22:00過ぎてから出したい時は、 どうすればよいでしょうか、 22:10 から 1としたいのですが、 試しても できませんでした・・・・ 0・91736111等になおしたり・・・ やはり 私では できませんでした。 もう1度 おねがいしたいのですが、
- bunjii
- ベストアンサー率43% (3589/8249)
ANo.5の訂正があります。 fx=IF(AND(HOUR(A2)>5,HOUR(B2)<22),"",IF(A2+B2=0,"",1)) ↓ fx=IF(AND(HOUR(A2)>5,HOUR(B2)<22),"",IF(A2*B2=0,"",1)) お勧めは次の通りです。 fx=IF(AND(HOUR(A2)>5,HOUR(B2)<22),0,IF(A2*B2=0,0,1))
- bunjii
- ベストアンサー率43% (3589/8249)
C列2行目の計算式は次のようになります。 fx=IF(AND(HOUR(A2)>5,HOUR(B2)<22),"",IF(A2+B2=0,"",1)) 但し、C列の計算結果を他の列で計算対象にするエラーが発生することがありますので注意して下さい。 ""の代わりに0を適用すればエラーが発生しませんので、こちらをお勧めします。
- tabotabo55
- ベストアンサー率32% (172/532)
5:00 22:00 始業 終業 4:30 13:00 1 0 1 7:00 23:00 0 1 1 23:10 0:10 1 1 1 8:10 14:10 0 0 上記のようになるようにしました。(E列の結果が上から、1,1,1,非表示 。またC列は1,0,1,0 D列、0,1,1,0 です) まずセルA1、B1に深夜の基準の時刻、その他仮のデータを入れ セルC3に =IF(A3="","",IF(OR(A3<$A$1,A3>$B$1),1,0)) セルD3に =IF(B3="","",IF(OR(B3<$A$1,B3>$B$1),1,0)) セルE3に =IF(C3+D3>0,1,"") 以下は上記の範囲のセルを下にコピー 式が複雑になりそうでしたので2つに分けました。後は、不要な列C,Dを非表示にすればOKかと。
お礼
今回の件で色々と考えていただきありがとうございました。 皆さまの力を借りて無事解決しましたので、 お礼を兼ねてほうこくします。 ありがとうございました。
補足
回答ありがとうございます。 このような 考え方もあったのですね。 新しいシートでためしたら、うまくゆきました。 目から鱗です。 しかし残念な事に、データーを入れたいシートに、 他のシートがでーたーを読み込んでますので、 行や列の追加ができないので、 なんとか、A・BをCのセル1つで処理したいのですが、 可能でしょうか、 よろしくお願いします。
- bunjii
- ベストアンサー率43% (3589/8249)
>退社時刻が22:00を過ぎた時に深夜判定 C列に1と入力するのですが、 深夜勤務の判定は22:00から翌朝5:00までと違いますか? 出勤が5:00より前の場合と退社が22:00を過ぎた場合の単独ではなく、出勤が9:00で退社が翌日の0:00を過ぎた場合もあり、16:00に出勤して翌日5:00を過ぎて退社した場合もあります。 それらのことを全て条件に入れる必要がありますか? 以上の補足を頂いてから考えたいと思います。
補足
そうそうの返答ありがとうございます。 言われるとうり、夜勤の者が、 14:00に出勤して、退社が5:00等の可能性も 在りますが、 近年年に 1度か2度程度なので、 単純に 出勤(A1)が、5:00前 つまり4:50から、が、朝勤の深夜判定 1 として、 午後勤の者が、 退社(B1)が、22:00を過ぎてからが、 (22:10) 深夜 1と 考えていますが、 こちらも 可能性としては、 22:00すぎ 出勤の場合なども考えられますが、 ほとんど 件数がありませんので、考えてませんでした。 IFやCOUNTIF関数に条件で、>を付けてためしたのですが、 データーが、無いセルの場合でも、1の判定が出てしまします。 たぶん 出勤時間 5:00>とした時、空白を0と考え 1と判定するのかとおもいますが、 何せ素人考えなので、 そこも分からないのです。 お手数ですが、よろしくお願いします。
- akiomyau
- ベストアンサー率43% (555/1280)
C列に以下のような式でどうでしょうか。 =IF(IF(A1="","",(A1>=TIMEVALUE("5:00"),"",1))
お礼
今回の件で色々と考えていただきありがとうございました。 皆さまの力を借りて無事解決しましたので、 お礼を兼ねてほうこくします。 ありがとうございました。
補足
ご検討ありがとうございます。 今書式に入れたのですが、エラー表示されます。 少し手を加えたのですが、 初心者な物で、やはりだめでした。 セルA1とB1の時間を読ませたいのですが、この式で、OKでしょうか!
- Baku7770
- ベストアンサー率37% (110/292)
countblank関数は試してみましたか?
補足
回答ありがとうございます。 COUNTBLANKですが、 どのように使えばよいのでしょうか、 あまり詳しくないのですが、 空白をカウントする関数ですおうか・・・ 使い方が分かりません、 お手数おかけします。
お礼
ありがとうございます。 2通りとも 上手くいきました。 何回も考えていただき感謝します。 私の力では、まだまだ 条件や数式が、重なると、どのような組み立てしたらよいか 分からないので、 今回の2つの関数も含めて、違いなどを勉強したいと思います。 お力添えありがとうございました。