[[20250722104902]] 『重複時間について』(運送) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『重複時間について』(運送)

教えてください。

現在、重複時間を求める関数
=IF(OR(COUNT(E6:E8)<2,AND(SIGN(E6)=-1,SIGN(E8)<>-1)),"",IF(ABS(E8)-ABS(E6)<0,TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),""))
を使用しているのですが、

※前日出発の場合、始業時間にマイナスをつけて入力しているのですが、
計算がおかしくなってしまいます。

例)
1日目 始業→11:55  終業→14:10 重複→5:50
2日目 始業→-22:13 終業→4:03

このような結果にしたいのですが、現在、このような場合は、1日目の始業時間にプラス24時間を足して

1日目 始業→35:55  終業→14:10
2日目 始業→-22:13  終業→4:03

と入力しているのですが、そうすると、重複時間が13:42とおかしな結果になってしまいます。

正しい計算式を教えてください。

下記のようなフォーマットを使用しています。

行 ___A___ __B__ __C__ __D__ __E__ __F__ __G__ __H__ ____I____

   1  報告日   曜日   始業   終業   重複   休憩   分割   拘束   休息期間 
   2  10/1     火     20:55   9:30
   3  10/2     水     20:45  10:00
   4  10/3     木     20:50  13:00
   5  10/4     金     20:35   8:30
   6  10/5     土                 
   7  10/6     日                 
   8  10/7     月     20:30   9:00

< 使用 Excel:unknown、使用 OS:Windows11 >


条件の説明がよくわからない(条件とサンプルの番地が合っていないのでどこのことを説明している
のかよくわからない。そもそも何の重複なのかが不明)のと Excelのバージョンが不明なのでなんと
もいえませんが

> 始業時間にマイナスをつけて入力しているのですが
変なことをせず日時で入力したほうがいいのでは?
(d-q-t-p) 2025/07/22(火) 12:14:52


 ご提示の「重複時間を求める関数」は、
 ご提示の「フォーマット」のどこのセルに入れているんですか?

(半平太) 2025/07/22(火) 12:17:53


半太郎さん

Eセルに入れています! (運送) 2025/07/22(火) 12:50:11

 マイナス値を入れるのは始業列ですよね。
 それはC列のハズですが・・
 何故 E列の符号をチェックするのですか?(重複にマイナス値はないですよね)
 ・・AND(SIGN(E6)=-1,SIGN(E8)<>-1))
        ↑     ↑

 それはさて置くとして
 何故 E列の6行目と8行目を差し引くのですか?

 ・・,TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00")
        ↑          ↑

(半平太) 2025/07/22(火) 13:53:24


半平太様

>マイナス値を入れるのは始業列ですよね。

 それはC列のハズですが・・

行1〜の項目は無視してください(;'∀')

>それはさて置くとして

 何故 E列の6行目と8行目を差し引くのですか?

 ・・,TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00")

E列の6行目と7行目、8行目と9行目・・・とそれぞれセル結合してあります。

※この数式は過去に調べてそのまま利用している為、なぜその数式になるのか等々は理解できていない状態です。
(運送) 2025/07/22(火) 16:48:59


 >1日目 始業→11:55  終業→14:10 重複→5:50  
 フーム、そこの重複が 5:50 になるべきと言うなら、
 次行のデータだけの問題だと思うのですがねぇ・・

 つまり
    >=IF(OR(COUNT(E6:E8)<2,AND(SIGN(E6)=-1,SIGN(E8)<>-1)),"", ・・は、
        ↓
 G6セル =IF(E8>=0,"",((ABS(F8)<ABS(E8))+TEXT(ABS(F8),"0!:00")-TEXT(ABS(E8),"0!:00")))

 でいいような気がします。
 ダメなら仕様を一からご説明願うことになります。

 <結果図>
行 _A_ _B_ ___C___ __D__ __E__  __F__  __G__ __H__
 5         報告日  曜日  始業   終業   重複  休憩 
 6           10/1  火    35:55  14:10  5:50      
 7                                              
 8           10/2  水   -22:13   4:03            
 9                                              
10           10/3  木    20:50  13:00            
11                                              

(半平太) 2025/07/22(火) 19:09:05


半平太様

ご教授ありがとうございます。

勘違いで、

<結果図>
行 _A_ _B_ ___C___ __D__ __E__ __F__ __G__ __H__

 5         報告日  曜日  始業   終業   重複  休憩 
 6           10/1  火    35:55  14:10  13:42      
 7                                              
 8           10/2  水   -22:13   4:03

が正しかったです。

10/1の始業時間【35:55】を【11:55】と入力、かつ、10/2の始業時間を【-22:13】と入力したら重複時間【13:42】という結果にしたいのすが、

=IF(OR(COUNT(E6:E8)<2,AND(SIGN(E6)=-1,SIGN(E8)<>-1)),"",IF(ABS(E8)-ABS(E6)<0,TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),""))

↑の数式だと、

正しい数式のご教授お願い致します。
(運送) 2025/07/23(水) 09:38:12


 >【11:55】と入力、かつ、10/2の始業時間を【-22:13】と入力したら重複時間【13:42】という結果にしたい

 なら、単にこれでいいような気がしますけど、なにか不都合な事態が発生しますか?
       ↓
 G6セル =IF(E8="","",IF(AND(E6>=0,N(E8)<0),TEXT(ABS(E6),"0!:00")+1-TEXT(ABS(E8),"0!:00"),""))

(半平太) 2025/07/23(水) 11:26:07


半平太様

=IF(E8="","",IF(AND(E6>=0,N(E8)<0),TEXT(ABS(E6),"0!:00")+1-TEXT(ABS(E8),"0!:00"),""))

↑この数式だと、
【11:55】と入力、かつ、10/2の始業時間を【-22:13】と入力したら重複時間【13:42】という結果にしたい
というのは、クリアできたのですが、

1日目  始業【8:05】→終業【15:23】
2日目  始業【2:01】→終業【16:18】
→重複時間【6:04】
という時間帯の結果が出なくなってしまいました。

=IF(OR(COUNT(E6:E8)<2,AND(SIGN(E6)=-1,SIGN(E8)<>-1)),"",IF(ABS(E8)-ABS(E6)<0,TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),""))
の数式では【6:04】の結果は出ていました!
(運送) 2025/07/23(水) 11:51:44


 横から失礼します。

 d-q-t-pさんがコメントしているように、そもそも「重複時間」が何なのかがよくわからないので、
 その説明があれば、解決策が示されるのでは?

(jjj) 2025/07/23(水) 13:32:47


jjj様

重複時間=ダブルカウント

運送業界では、
始業時刻から前日の始業時刻より早くなった場合は、拘束時間の「ダブルカウント」に注意が必要です。 ドライバーは、始業時刻から24時間が1日のため、1日の拘束時間のカウントをするにあたり、当日と翌日の拘束時間が重なる場合があります、これを、ダブルカウントと呼びます。

(運送) 2025/07/23(水) 14:33:35


 フム、業界特有のカウント方式でしたか。

 するとこうかな?
     ↓
 G6セル =IF(E8="","",IF(AND(E6>=0,E8<0),1+TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),IF(ABS(E8)<ABS(E6),TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),"")))

 <結果図>
 行  _A_  _B_  ___C___  __D__  ___E___  __F__  __G__  __H__  __I__
  5            報告日   曜日   始業     終業   重複   休憩   分割 
  6               10/1  火       11:55  14:10  13:42              
  7                                                               
  8               10/2  水      -22:13   4:03  14:08              
  9                                                               
 10               10/3  木        8:05  15:23   6:04              
 11                                                               
 12               10/4  金        2:01  16:18                     
 13                                                               
 14               10/5  土                                        
 15                                                               

 G8の14:08が正しいか、ちょっと自信ないです。
 色んな具体例を挙げていただくと、もっと精度が上がるのですが・・

(半平太) 2025/07/23(水) 14:54:29


半平太様

ありがとうございます。

<結果図>

 行  _A_  _B_  ___C___  __D__  ___E___  __F__  __G__  __H__  __I__
  5            報告日   曜日   始業     終業   重複   休憩   分割 
 8               10/2  水      -22:13   4:03  14:08              
  9                                                               
 10               10/3  木       8:05  15:23   6:04             
 11         

なのですが、この部分は前日出発ではないので重複時間は発生しないんです(-_-;)
業界特有のカウント、ややこしくて申し訳ないです。

例1)
1日目  始業→0:07    終業→8:18  重複→0:24
2日目  始業→−23:43  終業→8:22  重複→0:09
3日目  始業→−23:34  終業→8:05  重複→なし
4日目  始業→−23:36  終業→8:30

例2) 
1日目 始業→2:21  終業→翌日1:42(25:42表記)  重複→なし
2日目 始業→7:06  終業→15:20         重複→5:14
3日目 始業→1:52  終業→翌日1:28(25:28表記)

というようになります。

(運送) 2025/07/23(水) 15:52:07


 >前日出発ではないので重複時間は発生しない
 するとこう
    ↓
 G6セル =IF(OR(E8="",AND((E6)<0,E8>0)),"",IF(AND(E6>=0,E8<0),1+TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),IF(ABS(E8)<ABS(E6),TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),"")))

(半平太) 2025/07/23(水) 16:15:16


半平太様

ありがとうございます。
=IF(OR(E8="",AND((E6)<0,E8>0)),"",IF(AND(E6>=0,E8<0),1+TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),IF(ABS(E8)<ABS(E6),TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),"")))

↑この数式を用いて入力してみたのですが、重複が前日出発の重複がカウントされなくなってしまいました。

当日出発、前日出発と都度、出発時間がこ異なってくるのですが、どう対処したらいいでしょうか?
(運送) 2025/07/23(水) 16:31:54


 >↑この数式を用いて入力してみたのですが、重複が前日出発の重複がカウントされなくなってしまいました。

 どこの前日出発か不明瞭なので、問題となる具体例を上げてください。

(半平太) 2025/07/23(水) 17:20:32


横からですが何点か。

■1
私には全容が理解できてませんが、そもそも提示例がおかしくないですか?

 10/1の始業【35:55】・・・・10/2 11:55
 10/1の終業【14:10】・・・・10/1 14:10

のようになってしまい、そもそも10/1報告分?の中だけで遡っちゃってませんか?

■2
>10/1の始業時間【35:55】を【11:55】と入力、かつ、10/2の始業時間を【-22:13】と入力したら
上記も以下のようなことになり、やっぱり遡ってしまうように思われます

 10/1報告分・・・始業時間 [10/2 11:55]
 10/2報告分・・・始業時間 [10/1 22:13] or [10/1 1:47]

■3
そもそもマイナスの時刻が入力できるということは、入力欄は文字列扱いにしているということでしょうか?
もしそうであれば、前日・翌日を示すセルは別にしたほうが整理しやすいようにおもいます。

例えばこんな感じ

    __C___   __E__  __F___ .. __H__  __I___ .. __K__   
  5 報告日   ****始業****     ****終業****      重複
  6  10/1     当日  11:55     翌日   2:00     0:13
  7
  8  10/2     当日   1:47     当日  10:00     7:15
  9
 10  10/3     前日   2:45     当日   1:00   

上記のような形で、かつ、当日報告分と翌日報告分の重複時間がわかればよいということなら以下のような数式で求められるのではないでしょうか?

 [K6セル]
 =MAX(0, MIN(SUM($C6,I6,MATCH(H6,{"前日","当日","翌日"})-2),SUM($C8,I8,MATCH(H8,{"前日","当日","翌日"})-2))
 -MAX(SUM($C6,F6,MATCH(E6,{"前日","当日","翌日"})-2),SUM($C8,F8,MATCH(E8,{"前日","当日","翌日"})-2)))

(もこな2 ) 2025/07/23(水) 23:11:01


半平太様

昨日、ご教授いただきました、

=IF(OR(E8="",AND((E6)<0,E8>0)),"",IF(AND(E6>=0,E8<0),1+TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),IF(ABS(E8)<ABS(E6),TEXT(ABS(E6),"0!:00")-TEXT(ABS(E8),"0!:00"),"")))

の数式を再度試してみたところ、思い通りの結果になりました。
昨日は、頭が混乱していたようで・・・申し訳ありませんでした。
今回、親切に対応していただきまして、大変ありがとうございました。

もこな2様 ご回答ありがとうございました。

https://www.otsuka-shokai.co.jp/erpnavi/topics/column/logistics-dx/overlap-time.html

にあるように、運送の時間管理は少し特殊なんです。
もなこ2様の数式結果は、ちょっと違っていました。
ですが、ご回答していただきまして、ありがとうございました。

(運送) 2025/07/24(木) 09:59:51


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.