Datumsdifferenz berechnen und bestimmte Tage ausschliessen

17/11/2009 - 10:08 von Reinhold | Report spam
Hallo zusammen,

ich habe eine Urlaubsdatei angelegt. in den Spalten A und B wird das von-bis
Datum des Urlaubs eingetragen und mit der Formel
Nettoarbeitstage(a2;b2;feiertage) die Differenz ermittelt.
Bei einer 5-Tage-Woche funktioniert dies auch. Ich bekomme es aber nicht
hin, wenn ein Mitarbeiter z.B. nur eine 3-Tage-Woche hat. Dann sollen die
beiden Nicht-Arbeitstage bei der Rechnung auch nicht berücksichtigt werden.
Kann mir jemnad helfen ?
 

Lesen sie die antworten

#1 Andreas Killer
17/11/2009 - 10:55 | Warnen spam
Reinhold schrieb:

Nettoarbeitstage(a2;b2;feiertage) die Differenz ermittelt.
Bei einer 5-Tage-Woche funktioniert dies auch. Ich bekomme es aber nicht
hin, wenn ein Mitarbeiter z.B. nur eine 3-Tage-Woche hat. Dann sollen die
beiden Nicht-Arbeitstage bei der Rechnung auch nicht berücksichtigt werden.


Nun ja, man müsste dann von NETTOARBEITSTAGE die Anzahl der
gewünschten Wochentage abziehen, die nicht in den Feiertagen vorkommen.

=Nettoarbeitstage(a2;b2;feiertage)-AnzahlTage(a2;b2;{5;6};feiertage)

als Beispiel für eine 3-Tage-Woche von Montag bis Mittwoch.

Der TageTyp kann diese Werte haben:

1 Sonntag
2 Montag
3 Dienstag
4 Mittwoch
5 Donnerstag
6 Freitag
7 Samstag

Der Code muss in ein normales Modul, wie's geht steht hier:
http://www.online-excel.de/excel/si....php?fD#s2

Andreas.

Function AnzahlTage(Ausgangsdatum, Enddatum, TageTyp, _
Optional Freie_Tage) As Long
'Zàhlt die Anzahl bestimmter Tage zwischen 2 Daten
Dim I As Date, CountIt As Boolean, R As Variant
'Teste alle Tage
For I = Ausgangsdatum To Enddatum
'Ist es dieser Wochentag?
If IsArray(TageTyp) Then
CountIt = False
For Each R In TageTyp
If Weekday(I, vbUseSystemDayOfWeek) = R Then
CountIt = True
Exit For
End If
Next
Else
CountIt = Weekday(I, vbUseSystemDayOfWeek) = TageTyp
End If

If CountIt Then
'Freie Tage angegeben?
If IsMissing(Freie_Tage) Then
'Nein, zàhlen
CountIt = True
Else
If IsArray(Freie_Tage) Then
'Teste alle freien Tage
CountIt = True
For Each R In Freie_Tage
'Ist der Tag in der Liste
If I = R Then
'Ja, nicht zàhlen
CountIt = False
Exit For
End If
Next
Else
CountIt = Freie_Tage <> I
End If
End If
'Soll gezàhlt werden?
If CountIt Then AnzahlTage = AnzahlTage + 1
End If
Next
End Function

Ähnliche fragen