[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『作業終了時間の計算』(mkz)
A B C D E 1 製品名 作業単位時間 数量 開始時間 作業完了時間 2 #111 1.1 500 3
の場合に休み時間が、10:00〜10:10, 12:00〜12:45 , 15:00〜15:10,17:15〜17:30
なっています。この休み時間をプラスした作業完了時間を計算する場合は、
どのようにしたらよろしいでしょうか?
最初の作業開始時間のみ入力で、その後は前項の作業完了時間を開始時間とします。
なかなか回答が付かないようですので、何かの足しになれば・・・ 作業単位時間がどういうものか理解できませんでしたので、 必要な時間が入力されるとしています。 細かい検証はしていませんが、こんな感じでしょうか? (Hatch) A B C D E 1 製品名 作業単位時間 数量 開始時間 作業完了時間 2 #111 0:15 500 9:50 10:15 3 #112 1:00 10:15 11:15 4 #113 2:00 11:15 14:00 5 14:00 Sub test() Dim StTime As Long Dim EdTime As Long Dim myTime As Long Dim rest0 As Long Dim rest1 As Long Dim rest2 As Long Dim i As Long For i = 2 To Range("B100").End(xlUp).Row StTime = Round(Cells(i, 4).Value * 1440, 0) EdTime = StTime + Round(Cells(i, 2).Value * 1440, 0) myTime = StTime kyukei myTime rest1 = myTime myTime = EdTime kyukei myTime rest2 = myTime rest0 = rest2 - rest1
StTime = EdTime EdTime = EdTime + rest0 myTime = StTime kyukei myTime rest1 = myTime myTime = EdTime kyukei myTime rest2 = myTime rest0 = rest2 - rest1 EdTime = EdTime + rest0 Cells(i, 5).Value = EdTime / 1440 Cells(i + 1, 4).Value = EdTime / 1440 Next i End Sub Sub kyukei(myTime As Long) Dim rest0 As Long If myTime <= 600 Then rest0 = 0 If myTime > 600 And myTime <= 720 Then rest0 = 10 If myTime > 720 And myTime <= 900 Then rest0 = 55 If myTime > 900 And myTime <= 1035 Then rest0 = 65 If myTime > 1035 Then rest0 = 80 myTime = rest0 End Sub
回答、有難う御座います。
只、マクロは、未だ理解していませんので、
出来れば、Excelでの処理をお願致します。
又、説明不足の作業単位時間は、1台当たりの作業時間です。
#111は、1.1(M)*500=550(M)
AM8:00開始で作業完了時間(休み時間入れ)の時刻を算出します。
◆関数による方法です! ◆少し、変更しました! 1)作業単位時間を、便宜上、単位時間 と表示しています! 2)作業時間=作業単位時間*数量 を追加しました ◆なお、条件として、開始時間は最初の休憩時間の10:00より以前とします!
A B C D E F 1 製品名 単位時間 数量 作業時間 開始時間 完了時間 2 #111 1.1 100 110:00 8:00 9:50 3 #111 1.1 200 220:00 8:00 11:50 4 #111 1.1 300 330:00 8:00 14:25 5 #111 1.1 400 440:00 8:00 16:25 6 #111 1.1 500 550:00 8:00 18:30
◆作業時間の式 D2=TEXT(INT(B2)*100+MOD(B2,1)*60,"00!:00!:00")*C2 ★表示形式は、ユーザー定義で、[mm]:ss にします
◆完了時間の式 F2=E2+D2+IF(E2+D2+"0:65"*1>"17:15"*1,"0:80",IF(E2+D2+"0:55"*1>"15:00"*1,"0:65",IF(E2+D2+"0:10"*1>"12:00"*1,"0:55",IF(E2+D2>"10:00"*1,"0:10",0))))
◆もう少し、式を短く出来るかもしれませんが!?
◆いかがでしょうか! (Maron)
とりあえず作ってみました。 作業列を少なくする所に重きを置きましたので メンテは無理かも・・・・・。
Sheet1 A B C D E F G 1 製品名 作業 個数 作業 作業 作業 作業 単位 開始 終了 列1 列2 時間 時間 時間 2 #111 1 60 8:00 9:00 0:00 0:00 3 #111 1 60 9:00 10:00 0:00 0:00 4 #111 1 60 10:00 11:10 0:10 0:00 5 #111 1 60 11:10 12:55 0:45 0:00 6 #111 1 60 12:55 13:55 0:00 0:00 7 #111 1 60 13:55 14:55 0:00 0:00 8 #111 1 60 14:55 16:05 0:10 0:00 9 #111 1 60 16:05 17:05 0:00 0:00 10 #111 1 60 17:05 18:20 0:15 0:00 11 #111 1 60 18:20 19:20 0:00 0:00
Sheet2 A B 1 休憩開始 休憩終了 2 10:00 10:10 3 12:00 12:45 4 15:00 15:10 5 17:15 17:30
Sheet2に休憩開始時間と終了時間を入れてください。
Sheet1の関数は
E2=IF(C2="","",D2+B2/(24*60)*C2+F2+G2)
F2=IF(C2="","",IF(OR(IF(D2<=Sheet2!$A$2,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$A$2,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$B$2,1,0)=1,IF(D2<=Sheet2!$A$2,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$A$2,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$B$2,1,0)=2),Sheet2!$B$2-Sheet2!$A$2,0)+IF(OR(IF(D2<=Sheet2!$A$3,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$A$3,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$B$3,1,0)=1,IF(D2<=Sheet2!$A$3,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$A$3,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$B$3,1,0)=2),Sheet2!$B$3-Sheet2!$A$3,0)+IF(OR(IF(D2<=Sheet2!$A$4,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$A$4,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$B$4,1,0)=1,IF(D2<=Sheet2!$A$4,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$A$4,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$B$4,1,0)=2),Sheet2!$B$4-Sheet2!$A$4,0)+IF(OR(IF(D2<=Sheet2!$A$5,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$A$5,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$B$5,1,0)=1,IF(D2<=Sheet2!$A$5,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$A$5,1,0)+IF(D2+B2/(24*60)*C2<=Sheet2!$B$5,1,0)=2),Sheet2!$B$5-Sheet2!$A$5,0))
G2=IF(C2="","",IF(OR(IF(D2<=Sheet2!$A$2,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$A$2,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$B$2,1,0)=1,IF(D2<=Sheet2!$A$2,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$A$2,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$B$2,1,0)=2),Sheet2!$B$2-Sheet2!$A$2,0)+IF(OR(IF(D2<=Sheet2!$A$3,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$A$3,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$B$3,1,0)=1,IF(D2<=Sheet2!$A$3,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$A$3,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$B$3,1,0)=2),Sheet2!$B$3-Sheet2!$A$3,0)+IF(OR(IF(D2<=Sheet2!$A$4,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$A$4,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$B$4,1,0)=1,IF(D2<=Sheet2!$A$4,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$A$4,1,0)+IF(D2+B2/(24*60)*C2+F2<=Sheet2!$B$4,1,0)=2),Sheet2!$B$4-Sheet2!$A$4,0)+IF(OR(IF($D2<=Sheet2!$A$5,1,0)+IF($D2+B2/(24*60)*C2+F2<=Sheet2!$A$5,1,0)+IF($D2+B2/(24*60)*C2+F2<=Sheet2!$B$5,1,0)=1,IF($D2<=Sheet2!$A$5,1,0)+IF($D2+B2/(24*60)*C2+F2<=Sheet2!$A$5,1,0)+IF($D2+B2/(24*60)*C2+F2<=Sheet2!$B$5,1,0)=2),Sheet2!$B$5-Sheet2!$A$5,0)-F2)
として、必要行下にコピーして下さい。
「最初の作業開始時間のみ入力で、その後は前項の作業完了時間を開始時間とします。」 とのことですので、D列は D3=IF(C3="","",E2) で、下にコピーです。
うまくいきますでしょうか?
(HANA)
皆さん、有難う御座います。
休み時間を含んでいます。
感激*2でした。
これから応用して行きます。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.