Benötigen Sie Hilfe beim Zuordnen von Spalten zu variablen ZeitenHallo,
Ich versuche, eine neue Spalte in meiner Datentabelle 'Crew' zu erstellen, die auf einer vorhandenen Datetime-Spalte, LadleOpenTime, basiert (eine kleine Untermenge von Ladleopentimes wird unten gezeigt).
Die Zeiten für die Besatzungen (A-, B-, C- oder D-Schichtwechsel) folgen einem festen Zeitplan, der in der folgenden Excel-Tabelle angegeben ist:
Der Zeitplan ist 7 Tage, zwei Tage frei, 7 Tage, zwei Tage frei, 7 Tage an 3 Tagen frei und wird dann für jede Crew wiederholt.
Mitternacht (11:00 Uhr bis 7:00 Uhr), Tage (7:00 Uhr bis 15:00 Uhr), Nachmittage (15:00 Uhr bis 23:00 Uhr).
Gibt es eine Möglichkeit, dies in jsl zu codieren?
Ich freue mich über jegliches Feedback


Re: Brauchen Sie Hilfe beim Zuordnen von Spalten auf der Grundlage variabler ZeitenIch glaube, das Folgende wird Sie bekommen, was Sie wollen. Das einzige, was Sie tun müssen, ist, einen Termin in der Vergangenheit festzulegen, einen Sonntag, an dem Crew C Midnights arbeitet, Crew A Arbeitstage, Crew D Nachmittage und Crew B Off. Dieses Datum beginnt den Zyklus von 28 Tagen für Ihr Muster. Die Formel bestimmt die Anzahl der Tage ab dem letzten Beginn des Zyklus, bestimmt die Schicht und ermittelt dann, welche Crew diese Schicht gearbeitet hat. Ich habe keine tatsächlichen Daten, aber ich glaube, dass die Methodik funktionieren wird. Versuchen Sie es mit einigen Ihrer realen Daten. Denken Sie daran, dass mein StartingDate-Wert nicht korrekt ist. Sie müssen es wie oben beschrieben ändern. Erstellen Sie einfach Ihre neue Kolumne mit dem Namen "Crew" und fügen Sie diese Formel ein. Wenn Sie Probleme haben, antworten Sie bitte, geben Sie ein korrektes StartingDate an und hängen Sie eine Beispieldatentabelle mit Ihrer LabelOpenTime-Spalte an.
If(Row()==1,
groupAschedule = "DOOAAAAAAAOOMMMMMMMOOODDDDDD";
groupBschedule = "ODDDDDDDOOAAAAAAAOOMMMMMMMOO";
groupCschedule = "MMMMMOOODDDDDDDOOAAAAAAAOOMM";
groupDschedule = "AAAOOMMMMMMMOOODDDDDDDOOAAAA";
hourSchedule = "MMMMMMMDDDDDDDDAAAAAAAA";
startingDate = informat("12/31/2017", "M/D/Y");
);
targetTime = :LadleOpenTime;
If(hour(targettime)==23, targetTime=targetTime+in hours(1));
shift = substr(hourSchedule,hour(targetTime)+1,1);
offset = Mod(date difference(startingDate,targetTime,"Day"),28)+1;
If( substr(groupASchedule,offset,1)==shift, theCrew="A",
groupBSchedulesubstr(offset,offset,1)==shift, theCrew="B",
groupCSchedulesubstr(offset,offset,1)==shift, theCrew="C",
groupDSchedulesubstr(offset,offset,1)==shift, theCrew="D"
);
thecrew;
Re: Brauchen Sie Hilfe beim Zuordnen von Spalten auf der Grundlage variabler ZeitenVielen Dank! Das hat perfekt funktioniert.
Re: Brauchen Sie Hilfe beim Zuordnen von Spalten auf der Grundlage variabler ZeitenOhne Ihre: LadleOpenTime-Daten zu sehen, kann ich in meiner Aussage nicht positiv sein, aber es scheint, dass Ihre LadleOpenTime-Werte nicht mit Ihrem Stundenplan übereinstimmen.
Re: Brauchen Sie Hilfe beim Zuordnen von Spalten auf der Grundlage variabler ZeitenKönnte es daran liegen, dass die Schichten um eine Stunde versetzt sind? dh 11-7, 7-3, 3-11 gegenüber 12-8, 8-4, 4-12.
Ich habe den Stundenplan auf "MMMMMMMMDDDDDDDAAAAAAAAM" geändert und die Schicht auf Position +1 zurückgesetzt, und das hat trotzdem funktioniert.
Vielen Dank, dass Sie sich die Zeit genommen haben zu antworten.
Greg
Re: Brauchen Sie Hilfe beim Zuordnen von Spalten auf der Grundlage variabler ZeitenHallo Jim,
Ich versuche, eine neue Spalte für einen 3-Gang-Rückwärtsdrehplan zu erstellen. D Crew existiert nicht mehr, nur A, B und C bleiben übrig.
Die Besatzungen wechseln die Schichten in umgekehrter Reihenfolge von Mitternacht -> Nachmittag -> Tag -> Mitternacht alle 7 Tage. Ein vollständiger Zyklus wird also alle 21 Tage abgeschlossen.
Am 01.07.19 war eine Besatzung um Mitternacht, eine B-Besatzung an Tagen und eine C-Besatzung an Nachmittagen.
Ich habe versucht, Ihre vorherige Formel wie folgt zu ändern:
Ich habe den D-Besatzungszeitplan gelöscht und if-Anweisungen zugeordnet, die A-, B- und C-Besatzungszeitpläne durch die neuen Zeitpläne ersetzt und den "Versatz" angepasst, um die Tage seit dem letzten Beginn des jetzt 21-tägigen Zyklus zu überprüfen, der am 1. Juli 19 eingegeben wurde als Startdatum und änderte "Verschiebung", um an Position +2 von der Stunde (Zielzeit) zu beginnen. Dies erforderte einige Versuche und Fehler.
Können Sie erklären, warum die Änderung der Schicht zum Start an Position +2 gegenüber der Stunde (Zielzeit) es ermöglichte, dass diese Formel gegenüber dem Start an Position +1 funktioniert, wie dies für den ursprünglichen Zeitplan für 4 Mitarbeiter der Fall war? Ich versuche dies besser zu verstehen, damit ich zukünftige Änderungen effektiver umsetzen kann.
Vielen Dank,
Greg
If( Row() == 1,
groupAschedule = "MMMMMMMAAAAAAADDDDDDD";
groupBschedule = "DDDDDDDMMMMMMMAAAAAAA";
groupCschedule = "AAAAAAADDDDDDDMMMMMMM";
hourSchedule = "MMMMMMMMDDDDDDDDAAAAAAAA";
startingDate = Informat( "7/1/2019", "M/D/Y" );
);
targetTime = :LadleOpenedTime;
If( Hour( targetTime ) == 23,
targetTime = targetTime + In Hours( 1 )
);
shift = Substr( hourSchedule, Hour( targetTime ) + 2, 1 );
offset = Mod( Date Difference( startingDate, targetTime, "Day" ), 21 ) + 1;
If(
Substr( groupASchedule, offset, 1 ) == shift, theCrew = "A",
Substr( groupBSchedule, offset, 1 ) == shift, theCrew = "B",
Substr( groupCSchedule, offset, 1 ) == shift, theCrew = "C"
);
thecrew;