[[20210811154131]] 『稼働時間の算出方法について』(ななこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『稼働時間の算出方法について』(ななこ)

はじめてになります。宜しくお願い致します。
勤怠表のような難しい物ではないのですが
現在トラブルに対し様々な方に応援を頂きその稼働時間の算出をしたいです。

 A   B    C      D     E      F
日付 曜日 開始時間 終了時間 休憩時間 稼働時間

シンプルですがE列の休憩時間のみ変動があります。
基本8:00または9:00開始時間となります。

1,10:10〜10:20 10分休憩
2,12:20〜13:10 50分休憩
3、15:10〜15:20 10分休憩
4,18:00〜18:15 15分休憩
5,20:00〜20:15 15分休憩

CとDに手入力で時間を入れ、休憩時間をCDの値に対し自動でEに数値が入り
開始〜終了時間-休憩時間=稼働時間としたいです。
これができれば後は差し引きできるため計算ができます。

勤怠表ではないため残業時間や休日残業、半休といったような
条件はございません。

過去ログを拝見しかなり安易な質問ためレベルが低く
お手数をおかけいたしますが宜しくお願い致します。

< 使用 Excel:Office365、使用 OS:Windows10 >


確認です。

「シンプルですがE列の休憩時間のみ変動があります。」
ですが、休憩時間はD列ですよね。E列は稼働時間に見えます。

また、C列に「開始時間と終了時間」が入力されているのですよね。この「開始時間と終了時間」というのは、頂いたサンプルを見ると休憩の開始と終了に見えますが、それであっていますか?
それとも勤務の開始と終了ですか?

勤務の開始と終了であれば、次の計算式で勤務時間が出るので、更にD列の休憩時間を引けばよいかと思います。

=MID(C1,7,5)-LEFT(C1,5)
※「8:00」から勤務の場合は「08:00」と入力されていることが前提です。

(ハヤシライス) 2021/08/11(水) 17:05


>現在トラブルに対し様々な方に応援を頂きその稼働時間の算出をしたいです。

>CとDに手入力で時間を入れ、休憩時間をCDの値に対し自動でEに数値が入り
>開始〜終了時間-休憩時間=稼働時間としたいです。
>これができれば後は差し引きできるため計算ができます。

上記の文があるが、知りたいのはE列に入る式(または、E列を求めるVBA)で合っていますか?
であれば、"C列とD列に手入力で入れる時間"と"それによって求められるE列の値"の例を何個か提示してください。
>自動でEに数値が入り、
とだけ書かれても、その計算のルールが明確ではないため、理解が難しいです。
(w) 2021/08/11(水) 17:06


E2=IF(D2="","",TIME(0,IFS(D2<TIME(10,20,0),0,D2>=TIME(10,20,0),10,D2>=TIME(13,10,0),60,D2>=TIME(15,20,0),70,D2>=TIME(18,15,0),85,D2>=TIME(20,15,0),100),0))
F2=D2-C2-E2

C列D列がシリアル値で入力されている前提です
10:10以降の出勤は考慮していません
E2が小数点表示になる場合は表示形式を時刻に直してください
(砂糖) 2021/08/11(水) 17:11


補足です。

「休憩時間を引き算する」と説明しましたが、D列に「10」と入力(10分という意味)されている場合、単純に引き算ではダメです。

Excelでは、時間を「シリアル値」で扱っています。これは「1日」を「1」として計算しています。
ですので、10分を引き算したいのであれば、入力されている「10」をシリアル値に変換する必要があります。
具体的には「=10/24/60」です。

理由ですが、
1分 = 1日 / 24時間 / 60分
ですよね
なので、上記の計算で「分」を求めることができます。
(ハヤシライス) 2021/08/11(水) 17:17


IFSの優先順位間違えてました
訂正
E2=IF(D2="","",TIME(0,IFS(D2<TIME(10,20,0),0,D2>=TIME(20,15,0),100,D2>=TIME(18,15,0),80,D2>=TIME(15,20,0),70,D2>=TIME(13,10,0),60,D2>=TIME(10,20,0),10),0))

(砂糖) 2021/08/11(水) 17:20


 G〜K列に、1〜5それぞれの休憩時間を出す。

	A	B	C	D	E	F	G	H	I	J	K	
1							10:10	12:20	15:10	18:00	20:00	← 休憩の開始時刻を入力
2							10:20	13:10	15:20	18:15	20:15	← 休憩の終了時刻を入力
3	日付	曜日	開始	終了	休憩	稼働	休憩1	休憩2	休憩3	休憩4	休憩5	
4	8/11	水	9:00	16:00	1:10		0:10	0:50	0:10	0:00	0:00	
5	8/12	木	11:00	19:00	1:15		0:00	0:50	0:10	0:15	0:00	
6												

 G1:K2 に各休憩の開始時刻と終了時刻を入力

 G4 =IF(COUNT($C4:$D4)<2,"",MAX(0,MIN($D4,G$2)-MAX($C4,G$1)))
 表示形式「時刻」で右・下コピー

 E4 =IF(G4="","",SUM(G4:K4))
 表示形式「時刻」で下コピー

 以上
(笑) 2021/08/11(水) 17:24

様々な方法があるのですね・・・
ひとつひとつ試してみます。

なお手入力は業務の開始時間と終了時間となります。
例:C列に8:00 Dに17:00 休憩時間は1:10という形になります。
この休憩時間1:10が開始と終了(CとD)から自動算出できればという依頼でした。

稼働時間をシリアル値にして確認いたします。

うまく言った場合は再度ご連絡いたします。
(ななこ) 2021/08/11(水) 17:39


まず、やりたいことをきちんと整理されることをおすすめします。

例:C列に8:00 Dに17:00 休憩時間は1:10という形になります。
この休憩時間1:10が開始と終了(CとD)から自動算出できればという依頼でした。

とおっしゃっていますが、一番最初のお話と異なっていますし、
この例を見る限り、C列が勤務開始時間、D列が勤務終了時間ですよね。
この2つの情報からだけでは、休憩時間を求めることは難しいです(法定の休憩時間は出せますが、実際に休憩をとった時間はわからないですよね)。

(ハヤシライス) 2021/08/11(水) 17:43


 >一番最初のお話と異なっていますし
 同じだと思いますけど?

 >この2つの情報からだけでは、休憩時間を求めることは難しいです

 開始が 8:00、終了が 17:00 なら
 取った休憩は ↓ の3つ
 >1,10:10〜10:20  10分休憩
 >2,12:20〜13:10 50分休憩
 >3、15:10〜15:20 10分休憩

 だから休憩の合計が 1:10 になるということでは?

 以上
(笑) 2021/08/11(水) 17:52

なるほど。理解しました。
休憩のパターンだったのですね。
失礼しました。
(ハヤシライス) 2021/08/11(水) 17:56

 >基本8:00または9:00開始時間となります。
 >半休といったような条件はございません。

 「基本」というのがちょっとアレですけど・・・
 ・開始が「10:10」以降になることはない
 ・終了が休憩時間帯になることはない(「12:40」のように)

 だとすれば、G〜K列を使わず
 1行目は見出し、データは2行目からだとして

	A	B	C	D	E	F
1	日付	曜日	開始	終了	休憩	稼働
2	8/11	水	8:00	17:00	1:10	
3	8/12	木	9:00	19:30	1:25	
4						

 E2 =IF(COUNT(C2:D2)<2,"",LOOKUP(D2,{0,"10:20","13:10","15:20","18:15","20:15"}*1,{0,"0:10","1:00","1:10","1:25","1:40"}*1))
 表示形式「時刻」で下コピー

 以上
(笑) 2021/08/12(木) 08:23

 >半休といったような条件はございません。
 もしかして終了時間も必ず「17:00 以降」とか決まってるんですか?

 ・開始は 10:10 より前
 ・終了は 17:00 以降
 ・終了が休憩時間帯になることはない(「18:10」のように)

 だとすれば 2021/08/12(木) 08:23 の表で

 E2 =IF(COUNT(C2:D2)<2,"",LOOKUP(D2,{"17:00","18:15","20:15"}*1,{"1:10","1:25","1:40"}*1))
 または
 E2 =IF(COUNT(C2:D2)<2,"",IF(D2>="20:15"*1,"1:40",IF(D2>="18:15"*1,"1:25","1:10"))*1)

 表示形式「時刻」で下コピー

 以上
(笑) 2021/08/12(木) 11:37

>もしかして終了時間も必ず「17:00 以降」とか決まってるんですか?

決まっておりません。

以上 よろしくお願いいたします。

(ななこ) 2021/08/12(木) 12:13


 E2セル =SUM(LET(s,{"10:10";"12:20";"15:10";"18:00";"20:00"}*1,e,{"10:20";"13:10";"15:20";"18:15";"20:15"}*1,r,IF(e<D2,e,D2)-IF(s>C2,s,C2),IF(r<0,0,r)))
 F2セル =MAX(0,D2-C2-E2)

(半平太) 2021/08/12(木) 20:15


皆さまありがとうございました。
最終的にうまくいきましたのであらためてご御礼申し上げます
(ななこ) 2021/08/24(火) 09:43

コメント返信:

[ 一覧(最新更新順) ]


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