| 
    
     |  | ▼ichinose さん: >▼ackkn さん:
 >おはようございます。
 >
 >>どなたかご教示下さい、よろしくお願いします。
 >>時間計算で困っています、作業実績データの中に、昼休み時間が含まれたデータは昼休み時間(1H)を差し引くという物です。
 >>
 >>担当者コード 担当者名 開始時刻 終了時刻 昼休 所要時間 所要分
 >> 25638  山田花子  11:03   13:19  0:00  2:16  136
 >>
 >>上記のような作業実績データが複数行あります、上記の開始時刻、終了時刻には、
 >>実データとして 日付、時間が "2004/8/5 11:03:38" このような形で入っています。(これらの実績データはバーコードハンディーターミナルにて収集されている関係上)
 >>で、上記の昼休の算出をしたいのですが、昼休みは 11:30〜12:30です、よって、
 >>上記データは昼休み時間を含んでいる事になりますので、昼休のセルに"1:00"をセットしたいのです。
 >>昼休のセルに"1:00"がセットできれば、その分を所要時間から引けばOKです。
 >>関数でもいけそうな気がするのですが、なかなか上手くいきません。
 >>どうかよろしくお願い致します。
 >
 >作業開始時刻------a
 >作業終了時刻------b
 >昼休み開始時刻----c
 >昼休み終了時刻----d
 >
 >この四つの時刻の並び方で想定されるのは
 >
 >a-b-c-d  午前中(昼休み前)に作業終了
 >a-c-b-d  昼休みの途中で作業終了
 >a-c-d-b  オーソドックスなパターン
 >c-a-b-d  昼休み中だけ作業(実質ありえない)
 >c-d-a-b  午後(昼休み終了後)から作業開始
 >
 >基本の計算は、
 >
 >MIN(B,D)-MAX(A,C)
 >
 >で可能ですよね(但し、昼休み時間として、0:30という解も出てきます、いや、でてこないと単純には作業時間-昼休み時間という計算で実作業時間はえられませんよね?)
 >
 >後は、上記の計算をするかしないかの場合分けです。
 >
 >
 >「=IF(AND(MIN(B,D)=D,MAX(A,C)=A),
 >    TIMEVALUE("1:00"),
 >   IF(MIN(B,D)-MAX(A,C)<=0,
 >       0,
 >      MIN(B,D)-MAX(A,C)))」
 >
 >AND(MIN(B,D)=D,MAX(A,C)=A)で、ありえないパターンを見つけています。
 >この時は、昼休み時間 1:00
 >後半は、「MIN(B,D)-MAX(A,C)」の値が正か負かで分岐しました。
 >
 >実際にはa,b,c,dをセルアドレスに変えて試してみて下さい。
 >(昼休み開始、時間もどこかのセルに入れておいたほうがよいですよ!!
 > めったに変わらないだろうけど、可能性は0ではないから)
 >
 >時間が交差したときの細かい計算方法が不明なので独断で行いました。
 
 ichinose さん ありがとうございました。
 
 早速実際のデータで試してみましたが、私のやり方がまずいのか?、上手くいきません。
 
 以下のように、昼休み開始終了は固定値、作業開始終了をセル参照で試しました。
 但し、最初に書きました通り、作業開始終了には、実データとして "2004/8/5 11:03:38" のようなデータが入っています。
 
 =IF(AND(MIN(N5,"12:30")="12:30",MAX(M5,"11:30")=M5),TIMEVALUE("1:00"),IF(MIN(N5,"12:30")-MAX(M5,"11:30")<=0,0,MIN(N5,"12:30")-MAX(M5,"11:30")))
 
 N5:作業終了時間、M5:作業開始時間
 
 これでいくと、常に結果はゼロになってしまいます。
 よろしくご教示下さい。
 
 
 |  |