Clever-Excel-Forum

Normale Version: Enddatum berechnen mit
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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.  19
Hi,

ARBEITSTAG.INTL
Hallo,

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.

mfg
sollte mit folgender Formel funktionieren:

=ARBEITSTAG(B5;C5)+REST(C5;ABRUNDEN(C5;0))
Hallo MB_92,

bei 24 Std. je Arbeitstag mit ...
=ARBEITSTAG.INTL(B5;C5;1) + REST(C5;1)

Gruß Sigi
Feiertage eines kompletten Jahres per einziger Formelzelle ausgeben:  21
AB
12021ohne WE
201.0101.01
302.0402.04
404.0405.04
505.0413.05
601.0524.05
713.0503.06
823.0501.11
924.05
1003.06
1103.10
1201.11
1325.12
1426.12

ZelleFormel
A2=LET(j;A1;
    FFT;DATUM
(j;1;{1;121;276;305;359;360})+WENN(MONAT(DATUM(j;2;29))=2;{0;1;1;1;1;1});
    A;GANZZAHL
(j/100);
    B;15+GANZZAHL
((3*A+3)/4)-GANZZAHL((8*A+13)/25);
    C;2-GANZZAHL
((3*A+3)/4);
    D;REST
(j;19);
    E;REST
(19*D+B;30);
    F;GANZZAHL
((E+GANZZAHL(D/11))/29);
    G;21+E-F;
    H;7-REST
(j+GANZZAHL(j/4)+C;7);
    I;7-REST
(G-H;7);
    OS;G+I;
    K; DATUM
(j;3;OS);
    OFT;K+{-2;0;1;39;49;50;60};
    x;ZEILEN
(FFT);
    y;ZEILEN
(OFT);
    z;SEQUENZ
(x+y);
    SORTIEREN
(EINDEUTIG(WENN(z<x+1;INDEX(FFT;z);INDEX(OFT;z-x)))))
B2=FILTER(A2#;WOCHENTAG(A2#;2)<6)
Hallo,

Ich würde mit sbTimeAdd arbeiten:
http://www.sulprobil.com/sbtimeadd_en/

Viele Grüße,
Bernd