Hallo zusammen,
ich benötige mal euer geballtes Fachwissen.
Ich habe einen Starttermin und möchte gerne anhand von einer Angabe von 1,25 Tag einen Endtermin berechnen.
Soweit so gut...
Allerdings möchte ich keine Wochenenden oder Feiertage mit berechnen.
Bei der Funktion ARBEITSTAG werden leider nur volle Tage gezählt.
Für einen guten Tipp wäre ich sehr Dankbar.
es ist möglich mit VBA die Feiertage zu berechnen:
Code:
Function Feiertag(Datum As Date) As String
Dim J%, D%
Dim O As Date
J = Year(Datum)
'Osterberechnung
D = (((255 - 11 * (J Mod 19)) - 21) Mod 30) + 21
O = DateSerial(J, 3, 1) + D + (D > 48) + 6 - _
((J + J \ 4 + D + (D > 48) + 1) Mod 7)
'Feiertage berechnen
Select Case Datum
Case DateSerial(J, 1, 1)
Feiertag = "Neujahr"
Case DateSerial(J, 1, 6)
Feiertag = "Dreikönig"
Case DateAdd("D", -2, O)
Feiertag = "Karfreitag"
Case O
'Feiertag = "Ostersonntag"
Case DateAdd("D", 1, O)
Feiertag = "Ostermontag"
Case DateSerial(J, 5, 1)
Feiertag = "Erster Mai"
Case DateAdd("D", 39, O)
Feiertag = "Christi Himmelfahrt"
Case DateAdd("D", 49, O)
'Feiertag = "Pfingstsonntag"
Case DateAdd("D", 50, O)
Feiertag = "Pfingstmontag"
Case DateAdd("D", 60, O)
Feiertag = "Fronleichnam"
Case DateSerial(J, 8, 15)
'Feiertag = "Maria Himmelfahrt*"
Case DateSerial(J, 10, 3)
Feiertag = "Deutsche Einheit"
Case DateSerial(J, 11, 22) - (DateSerial(J, 11, 18) Mod 7)
Feiertag = "Buß- und Bettag"
Case DateSerial(J, 10, 31)
Feiertag = "Reformationstag"
Case DateSerial(J, 11, 1)
Feiertag = "Allerheiligen"
Case DateSerial(J, 12, 24)
'Feiertag = "Heiligabend"
Case DateSerial(J, 12, 25)
Feiertag = "1. Weihnachtstag"
Case DateSerial(J, 12, 26)
Feiertag = "2. Weihnachtstag"
Case DateSerial(J, 12, 31)
'Feiertag = "Silvester*"
Case Else
Feiertag = ""
End Select
End Function
Sub Alle_Feiertage()
With Sheets("Feiertage")
Dim i As Date, r As Integer, ret As String
r = 22
For i = #1/1/2018# To #12/31/2029#
ret = Feiertag(i)
If ret <> "" Then
r = r + 1
Cells(r, 1) = ret
Cells(r, 2) = i
'Cells(r, 3).FormulaR1C1 = "=VLOOKUP(RC[-2],R3C1:R18C17,R20C2,0)"
End If
Next i
End With
End Sub
Zusätzlich ist eine Tabelle für alle Bundesländer nötig.