Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wechsel der freien Tage während der Laufzeit

Wechsel der freien Tage während der Laufzeit
07.11.2023 21:27:28
Nordic
Hallo,
mit der nachfolgenden Formel berechne ich ausgehend von einem Startdatum ein Enddatum.

=WENNFEHLER(ARBEITSTAG.INTL(I7;((U7+V7)-1);"0000111";Ressourcen!C$2:C$15);"")


Nun haben wir ab der KW 41 (erstmals ab 13.10) den freien Tag von Mittwoch auf Freitag gelegt.
Für alle mit Startdatum ab dem 11.10. (Start ist grundsätzlich Mittwoch) passt das so, für alle mit Enddatum bis 10.10. kann ich die Formel entsprechend anpassen.
Mein Problem ist die "Übergangszeit" - Startdatum am 04.10. und davor, Enddatum nach dem 13.10. Hierdurch entsteht ein Tag mehr als es sollte.

https://www.herber.de/bbs/user/164102.xlsm

Grüße, Nordic (Uwe)

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wechsel der freien Tage während der Laufzeit
08.11.2023 00:40:38
Sigi.21
Hallo Nordic,

was hindert dich daran, bei den "Freien Tagen" die projektfreien MI und FR zu integrieren?
Alternativ könntest du eine VBA-Funktion analog zu "Arbeitstag" programmieren, die auch die freien Mi und Fr berücksichtigt. VBA kannst du ja offensichtlich.

Gruß Sigi
AW: Wechsel der freien Tage während der Laufzeit
08.11.2023 05:37:06
Nordic
Moin Sigi,
es ist nur ein Tag Projektfrei.
Seit 13.10. ist es Freitag, davon war es Mittwoch.
Was meinst du mit "integrieren"?
Grüße, Nordic (Uwe)
AW: Wechsel der freien Tage während der Laufzeit
08.11.2023 06:45:06
Sigi.21
Hallo Nordic,

du hast doch die "Freien Tage" bei der Funktion "Arbeitstag.Int.()". Da fügst du diese projektfreien Tage ein:
'=WENNFEHLER(ARBEITSTAG.INTL(I7;((U7+V7)-1);"0000011";Ressourcen!C$2:C$68);"")
Alternative wäre - da du sowieso VBA nutzt - eine VBA-Funktion, die das gleiche macht wie Arbeitstag. (Da kann ggf. geholfen werden.)
(s. Mappe)

Gruß Sigi
https://www.herber.de/bbs/user/164104.xlsx
Anzeige
AW: Wechsel der freien Tage während der Laufzeit
08.11.2023 07:04:45
Nordic
Moin Sigi,
das ist schon mal ein super Idee. :)
Manchmal kann's auch ganz einfach sein (Feierage => Freie Tage)
Vielen Dank

Rein interessehalber, kein muss und nicht so eilig:
Wie würde das für Feier- und\oder Projektfreie Tage in VBA aussehen?
(je mehr VBA, desto weniger Formeln muss ich vor den zerschießen schützen ;) )

Viele Grüße und einen angenehmen Tag, Uwe
AW: Wechsel der freien Tage während der Laufzeit
08.11.2023 07:14:07
Sigi.21
Hallo Nordic,

als VBA-Fkt.:

Function ArbTageAdd(Datum As Date, ArbTage As Long, FreieTage As Range) As Date

Dim Dt As Date, tt As Long
Dt = Datum: tt = ArbTage
If tt > 0 Then
Do
Dt = Dt + 1
If Not IstFrei(Dt, FreieTage) Then
tt = tt - 1
End If
Loop While tt > 0
ElseIf tt 0 Then
Do
Dt = Dt - 1
If Not IstFrei(Dt, FreieTage) Then
tt = tt + 1
End If
Loop While tt 0
End If
ArbTageAdd = Dt
End Function

'******************************************************************
Private Function IstFrei(Dt As Date, FreieTage As Range) As Boolean
Dim FT As Range, frei As Boolean
'vor 13.10.
If (Dt DateSerial(2023, 10, 13) And Weekday(Dt, 2) = 3) Or Weekday(Dt, 2) > 5 Then
frei = True
'nach 12.10.
ElseIf (Dt > DateSerial(2023, 10, 12) And Weekday(Dt, 2) = 5) Or Weekday(Dt, 2) > 5 Then
frei = True
Else
For Each FT In FreieTage
If FT.Value = Dt Then
frei = True
End If
Next FT
End If
IstFrei = frei
End Function


Dann reichen bei "freie Tage" die Feiertage.

Gruß Sigi
Anzeige
AW: Wechsel der freien Tage während der Laufzeit
08.11.2023 20:07:35
Nordic
Moin Sigi,
erstmal herzlichen Dank für Deine Mühe. :)

Ich muss zugeben, dass ich den VBA Code zwar so einigermaßen verstehe und auch "vermute" dass er beim Tabellenblatt hinterlegt wird, wie ich den Code jedoch konkret in dem Projekt anspreche ist mir ein Rätsel.
Daher werd' ich wohl doch auf den anderen Vorschlag zurückkommen und die freien Tage in die "Ressourcen" packen, zumal auch Brückentage vorkommen können.
Beispielsweise werden wir auch zwischen den Feiertagen geschlossen haben (27. und 28.12., 29.12. ist ohnehin ein Freitag)

Ich würde jedoch für die freien Tage eher eine weitere Spalte (neben den Feiertagen) bestücken wollen.
(find ich irgendwie geordneter, auch wenn's später niemand sieht, da "Ressourcen" ausgeblendet sein wird.
Wie muss ich den Part
Ressourcen!C$2:C$68)

anpassen, da die Feiertage in C2:C15 und die freien Tage in D2:D55 berücksichtigt werden sollen?

Den Wechsel in der ersten Woche des neuen Jahres zu vollziehen wäre wohl in der Hinsicht geschickter gewesen.
Alle "neuen" bekommen eine angepasste Formel und gut.

Gruß, Uwe
Anzeige
AW: wäre auch mit Formel realisierbar ...
10.11.2023 16:59:19
neopa C
Hallo Uwe,

... wenn Deine "Feiertage" immer in =Ressourcen!C2:C15 stehen schreibe in Ressourcen!C16 folgende Formel:
=WENN(ZEILE(A1)>ANZAHL(D:D);"";INDEX(D:D;ZEILE(D2))) und kopiere diese ziehend weit genug nach unten.

Dann folgende Formel:
=WENNFEHLER(ARBEITSTAG.INTL(I7;(U7+V7)-1;1;Ressourcen!C2:INDEX(Ressourcen!C:C;15+ANZAHL(Ressourcen!D:D)));"")

Gruß Werner
.. , - ...
AW: oder kürzer ...
10.11.2023 17:08:03
neopa C
Hallo,

... in Ressourcen!C16 folgende Formel: =WENN(ZEILE(A1)>ANZAHL(D:D);0;INDEX(D:D;ZEILE(D2)))

Die dann scheinbar verwirrenden Datumsangaben: Sa 00.01.1900, wenn die Formel zu weit nach unten kopiert wurde kannst Du einfach durch benutzerdefiniertes Zahlenformat: TTT TT.MM.JJJJ;; ausblenden.

Als Formel für das Enddatum reicht dann einfach z.B: =WENNFEHLER(ARBEITSTAG.INTL(I7;(U7+V7)-1;1;Ressourcen!C2:C300);"")

Gruß Werner
.. , - ...
Anzeige
AW: oder kürzer ...
14.11.2023 20:06:35
Nordic
Moin Werner,
ich hatte im Forum den ursprünglichen Beitrag nicht gefunden, erst über "eigene Beiträge" (und diese Möglichkeit auch eher zufällig)
Also...
ich bin's jetzt etwas anders angegangen (alle TN freien Tage stehen unter Ressourcen D) und hoffe, dass es dafür eine Lösung gibt, die ich einfacher verstehe:

Wie muss ich meine ursprüngliche Formel
=WENNFEHLER(ARBEITSTAG.INTL(H7;((T7+U7)-1);"0000111";Ressourcen!C$2:C$15);"")
damit neben den Feiertagen in C auch die freien Tage in D berücksichtigt werden.
Zumindest eins vermute ich mal: In jedem Fall kann dann "0000111" durch "0000011" ersetzt werden.

https://www.herber.de/bbs/user/164266.xlsm

Lieben Dank schon mal im Voraus und Grüße, Nordic (Uwe)
Anzeige
AW: schau ich mir morgen an owT
14.11.2023 20:13:43
neopa C
Gruß Werner
.. , - ...
AW: schau ich mir morgen an owT
Nordic
Hallo Werner,
das "Problem" hat sich "gelöst".
Ich mach ein Testphase bis Ende des Jahres mit den Daten ab 11.10. und geh dann zum 02.01. live.
Da dieser Wechsel im Oktober nur ein Ausnahmefall war muss dieser an 2024 auch nicht mehr berücksichtigt werden.
Trotzdem vielen Dank für Deine Mühe.
Grüße Nordic (Uwe)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige