Hallo Zusammen,
ich arbeite derzeit in einem kleineren Unternehmen und möchte dort mithilfe einer Excel Tabelle die Steuerung der Produktion verbessern.
Mein Ziel ist es mithilfe der erstellten Excel- Liste genauere Fertigstellungszeitpunkte (Stundengenau) anzugeben.
Gegeben:
- Jahreskalender mit täglichen Arbeitszeiten / Feiertagen
- Dauer des Fertigungsauftrages in h
- Täglich vorhandene Arbeitszeit
Gesucht:
- Fertigstellungszeitpunkt unter Berücksichtigung der täglichen Arbeitszeit
- Bei einer Zeitlichen Änderung im Kalender oder der Auftragsdauer sollte dies fortlaufend mit eingerechnet werden
Derzeit kann ich leider von 24h ausgehen und Ich weiß leider nicht wie ich einen genaueren Termin berechnen kann.
Das heißt er verrechnet mir pro Tag jeweils 1,5h Zuviel oder mehr, wenn ich eine Woche mit 2 oder 1 Schicht rechnen möchte.
Somit suche ich eigentlich nach einer Formel bzw. Programmierung die es mir ermöglicht, das mein Plan neue Termine sofort berechnen kann.
Ähnlich wie MS- Projekt das ermöglicht.
Vielleicht weis jemand von euch eine Lösung.
Vielen Dank und Gruß
Revo
Hi Revo,
bitte keine Bildchen, sondern eine Beispieldatei.
Hallöchen,
Egal ob als Bild oder Datei, Deine Daten passen aber eher zu einem 3Schichtsystem - 22,5 h am vollen Tag - als zu einem 2Schichtsystem oder arbeitet Ihr 11,25h am Tag? Auch die 7,5 h a Sonntag passen nicht, wenn es dabei um die Nachtschicht eines 3SchichtSystems geht. Da fallen am Sonntag doch in der Regel nur 2 h an und dann wird bis Montag früh 6 Uhr gearbeitet - ergibt abzüglich 30 Minuten Pause dann die 7,5 h. Man müsste auch genau wissen, wann Ihr die 2 Schichten fahrt, z.B. ab 6:00 Uhr oder 5:30, und analog zu Deinem Bild wie die verfügbare Zeit ist und ob z.B. bei der Uhrzeitermittlung Pausen zu berücksichtigen sind …
Wir hatten schon mal ein ähnliches Thema - schaue mal in diesen Thread, ob das für Deine Zwecke passt oder passend gemacht werden kann
Auftragsende berechnen
Hallo,
vielen Dank. Dieser Link hat mir sehr weitergeholfen (siehe Zitat) allerdings sind meine Kenntnisse in der VBA sehr schlecht.
Deshalb tu ich mich sehr schwer dies auf mich anzupassen.
Die Feiertagsregelung benötige ich nicht (kann ich ja dann auch im Arbeitskalender eintragen). Allerdings sollen alle Zeiten flexible berechnet werden, je nachdem wie viel Zeit am entsprechenden Tag zur Verfügung steht.
Außerdem soll die Berechnung bei einer Änderung der Reihenfolge oder Änderung des Startdatums, durch Knopfdruck eine Neuberechnung stattfinden. Es ist möglich das Aufträge auch länger als 24 benötigen.
Wäre echt klasse wenn ihr mir hier weiterhelfen könnt.
Vielen Dank schon mal :)
Zitat:Sub Zeitberechnung()
lr = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lr
Cells(i, "C") = Cells(i, "A") + Cells(i, "B")
'Feiertag
'Beginn:
Tadd = 0
wtag = Weekday(Int(Cells(i, "C")), 2)
Select Case wtag
Case 1
If (Cells(i, "C") - Int(Cells(i, "C"))) < 0.25 Then Tadd = 0.25
Case 6
If (Cells(i, "C") - (Int(Cells(i, "C")))) > 0.25 Then
Tadd = 0.75 + 1 + 0.25 'von Sa 6:00 auf Mo 6:00 verschieben
End If
Case 7
Tadd = 1
End Select
Cells(i, "C") = Cells(i, "C") + Tadd
Next i
End Sub
Hat niemand eine Idee? :22:
Hat jemand eine Idee wer mir bei meinem Problem weiterhelfen könnte?
Ich hab mich mal daran versucht, schau mal ob du damit was anfangen kannst...
Hallöchen,
hier mal ein Anfang. Der Code ist allerdings erst mal fest auf Dein Anfangsdatum und die beiden Tabellengrößen programmiert. Ich muss jetzt erst mal in die Falle, morgen früh geht's gegen 5 wieder hoch … Wenn das bis dahin keiner ausbaut kommt von mir morgen Abend der Rest
Code:
Sub test()
Dim iCnt%, kCnt%, iAuf#, iHab#
kCnt = 7
For iCnt = 3 To 24
iAuf = iAuf + Cells(iCnt, 2)
Do While iHab < iAuf
iHab = iHab + Cells(kCnt, 11) - Cells(kCnt, 10) + (Cells(kCnt, 10) > 0) * (Cells(kCnt, 11) = 0)
kCnt = kCnt + 1
If kCnt > 35 Then Exit Do
Loop
Cells(iCnt, 3) = Cells(kCnt - 1, 8) + Cells(kCnt - 1, 11) - (iHab - iAuf)
Cells(iCnt, 4) = iAuf 'Summe Auftragszeiten zur Kontrolle in Spalte D
Next
End Sub
Hallöchen,
hier jetzt der fertige und kommentierte COde.
Modul Modul1Option Explicit
Sub test()
'Variablendeklarationen Integer, Double
Dim iCnt%, kCnt%, iAuf#, iHab#
'in Spalte H Zeile mit Startdatum aus C2 ermitteln
kCnt = Columns("H:H").Find(What:=Cells(2, 3).Value, After:=Cells(2, 8), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row
'Schleife ueber alle Zeilen mit Auftraegen ab Zeile 3
'Beachte: Unter den Auftraegen darf in Spalte A nix stehen
For iCnt = 3 To Cells(Rows.Count, 1).End(xlUp).Row
'Auftragszeit kumulativ ermitteln
iAuf = iAuf + Cells(iCnt, 2)
'Schleife solange die verbrauchte Zeit kleiner als die Auftragszeit ist
Do While iHab < iAuf
'verbrauchte Zeit kumuliert ermitteln + Korrektur 1 bei Tagesanfang > 0:00 und Tagesende = 0:00
iHab = iHab + Cells(kCnt, 11) - Cells(kCnt, 10) + (Cells(kCnt, 10) > 0) * (Cells(kCnt, 11) = 0)
'Zeilenzaehler hochsetzen
kCnt = kCnt + 1
'Schleife verlassen wenn Ende der Zeittabelle erreicht ist
'anhand Spalte H - unter den Eintragungen darf nix mehr stehen!
If kCnt > Cells(Rows.Count, 8).End(xlUp).Row Then Exit Do
'Ende Schleife solange die verbrauchte Zeit kleiner als die Auftragszeit ist
Loop
'Ende ermitteln aus Datum der vorherigen Zelle und restlicher Auftragszeit fuer den Tag
'(ergibt sich aus Differenz zwischen Auftragszeit und verbrauchter Zeit iHab-iAuf)
Cells(iCnt, 3) = Cells(kCnt - 1, 8) + Cells(kCnt - 1, 11) - (iHab - iAuf) + (Cells(kCnt - 1, 10) > 0) * (Cells(kCnt - 1, 11) = 0)
'Auftragszeit kumuliert in Spalte D ausgeben - Codezeile kann geloescht werden
Cells(iCnt, 4) = iAuf
'Ende Schleife ueber alle Zeilen mit Auftraegen ab Zeile 3
Next
End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media
Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0