Hallo,
noch eine weitere @Formel, die vielleicht für einige interessant ist. Häufig hat man dass Problem, dass man in einem kleinen Workflow die Arbeitstage benötigt, weil z. B. nach 3 Arbeitstagen eine Eskalation stattfinden muss. Wenn man das richtig machen möchte, dann muss man Wochenden und Feiertage berücksichtigen und ist die Berechnung nicht mehr ganz trivial.
In der nachfolgenden Formel wird davon ausgegangen, dass die Liste der Feiertage in der Variablen "feierTage" als Text-Liste gespeichert ist (bei uns war das damals ein Konfiguratoinsdokument). Außerdem gibt es noch eine Liste mit halben Feiertagen, sofern der Arbeitgeber diese nicht als vollständig frei definiert.
Mit LotusScript geht das natürlich deutlich einfacher, aber damals war das noch keine Option und außerdem kann man die Formel so leichter in ein berechnetes Feld aufnehmen
Vielleicht kann ja der ein oder andere die Formel gebrauchen.
REM "Berechnung der Arbeitstage zwischen VON und BIS";
von := ...;
bis := ...;
feierTage := "1.1.2005" : "6.1.2005" : ...;
halbeTage := "24.12.2005" : "31.12.2005" : ...;
alleTageStr := @Explode(@TextToTime(@Text(Von) + " - " + @Text(Bis)));
alleTage := @TextToTime(alleTageStr);
wochenendeStr := @Replace(@Text(@Weekday(alleTage)); "1" : "7"; "x" : "x") + alleTageStr;
wochenende := @Trim(@Right(wochenendeStr; "x"));
freieTage := @Unique(feierTage : wochenende);
arbeitsTage := @Trim(@Replace(alleTageStr; @Keywords(alleTageStr; freieTage; ""); ""));
halbeArbTage := @Keywords(arbeitsTage; halbeTage; "");
anzahlTage := @Elements(arbeitsTage) - (@Elements(halbeArbTage) / 2);
anzahlTage
Passend hierzu habe ich auch noch die Formel zu berechnen des n-ten Arbeitstags ab einem bestimmten Datum. Es werden die gleichen Konfigurationswerte wie oben benutzt.
REM "Berechnung des n-ten Arbeitstage ab VON";
von := ...;
n := ...;
feierTage := "1.1.2005" : "6.1.2005" : ...;
halbeTage := "24.12.2005" : "31.12.2005" : ...;
bis := @Adjust(von; n; 0; 0; 0; 0; 0);
alleTageStr := @Explode(@TextToTime(@Text(Von) + " - " + @Text(Bis)));
alleTage := @TextToTime(alleTageStr);
wochenendeStr := @Replace(@Text(@Weekday(alleTage)); "1" : "7"; "x" : "x") + alleTageStr;
wochenende := @Trim(@Right(wochenendeStr; "x"));
freieTage := @Unique(feierTage : wochenende : halbeTage);
arbeitsTage := @Trim(@Replace(alleTageStr; @Keywords(alleTageStr; freieTage; ""); ""));
zielDatum := @Date(@TextToTime(@Subset(@Subset(arbeitsTage; n); -1)))
zielDatum
Gruß,
Joachim