Lotus Notes / Domino Sonstiges > Tipps und Tricks

Berechnung der Arbeitstage zwischen zwei Terminen

(1/5) > >>

jr:
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

Semeaphoros:
Kannst Du kurz sagen, welches die Unterschiede zu @BusinessDays ist (ausser dass schon früher als ND6 verwendbar ist)?

diali:
@BusinessDays zieht die Feiertage nicht ab!

Gruß
Dirk

jr:
Du hast recht, unter R6 geht das auch mit @BusinessDays, außer, dass die halben Tage nicht berücksichtigt werden. Die Funktion ist noch aus R4. Ich weiß nicht, wieß den anderen geht, aber bei mir arbeitet die Hälfte meiner Kunden noch mit R5, und da brauche ich die Formel, obwohl ich unter R6 entwickle.

Joachim

jr:
Ach ja, den n-ten Arbeitstag ab einem Datum kann man, glaube ich, mit @BusinessDays auch nicht berechnen.

Joachim

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln