Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
512to516
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
512to516
512to516
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktion Werktage meckert

Funktion Werktage meckert
09.11.2004 14:08:31
VolkerKöln
Liebe Forumsteilnehmer,
ich habe einen Sourcecode gefunden, der die Anzahl der Werktage zwischen 2 Terminen berechnet. Was mich stört, ist der 3. Bereich "rngholliday". Wenn der nicht durch eine beliebige Zelladresse gefüllt ist, meldet die Funktion #WERT.
Wie kann man es bewerkstelligen, daß der 3. Bereich optional ist, also gar nicht erst gefüllt werden muss, wenn keine Urlaubs- oder Feiertage in diesem Datumsbereich existieren?

Function WERKTAGE(Startdatum As Date, Enddatum As Date, rngHolliday As Object) As Integer
Dim rng As Range
Dim iCounter As Integer, iStart As Integer
Dim iEnd As Integer, iTmp As Integer
iStart = 8 - Weekday(Startdatum)
iEnd = Weekday(Enddatum) - 1
iTmp = (Enddatum - Startdatum) - (iStart + iEnd)
iTmp = iTmp - (iTmp / 7)
iTmp = iTmp + iStart + iEnd
If Weekday(Startdatum) = 1 Then iTmp = iTmp - 1
For iCounter = 1 To rngHolliday.Rows.Count
Set rng = rngHolliday.Cells(iCounter, 1)
If rng >= Startdatum And rng <= Enddatum Then
If Weekday(rng) <> 1 Then iTmp = iTmp - 1
End If
Next iCounter
WERKTAGE = iTmp
End Function

Vielen Dank vorab für Hilfestellungen
Volker aus Köln

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion Werktage meckert
u_
Hallo,
Excel-Profi?
das ist doch die Funktion NETTOARBEITSTAGE aus dem AddIn 'Analysefunktionen'.
Gruß
AW: Funktion Werktage meckert
VolkerKöln
Hallo U_
nettoarbeitstage rechnet nur mit den tagen von Montag bis Freitag, wenn ich es richtig in Erinnerung habe.
Werktag ist aber auch der Samstag.
Ich finde es schon etwas hämisch, excel-profi? zu schreiben, wenn man nicht genau versteht, worum es geht.
Gruss
Volker
Wiedergutmachung
u_
Hallo,
man sollte genauer lesen.
Das hier klappt:

Function WERKTAGE(Startdatum As Date, Enddatum As Date, Optional rngHolliday As Range) As Integer
Dim rng As Range
Dim iCounter As Integer, iStart As Integer
Dim iEnd As Integer, iTmp As Integer
iStart = 8 - Weekday(Startdatum)
iEnd = Weekday(Enddatum) - 1
iTmp = (Enddatum - Startdatum) - (iStart + iEnd)
iTmp = iTmp - (iTmp / 7)
iTmp = iTmp + iStart + iEnd
If Weekday(Startdatum) = 1 Then iTmp = iTmp - 1
If Not rngHolliday Is Nothing Then
For iCounter = 1 To rngHolliday.Cells.Count
Set rng = rngHolliday.Cells(iCounter)
If rng >= Startdatum And rng <= Enddatum Then
If Weekday(rng) <> 1 Then iTmp = iTmp - 1
End If
Next iCounter
End If
WERKTAGE = iTmp
End Function

Ich hoffe das reicht, um dich zu besänftigen ;-)
Zusätzlich könne die Feiertage in Zeilen und/oder Spalten angegeben sein.
Gruß
Anzeige
AW: Wiedergutmachung
VolkerKöln
Hallo U_
danke für die schnelle Hilfe.
Funktioniert bestens.
Ego Te absolvo / :-)
Gruss
Volker
Nachtrag
u_
Hallo,
hier noch als Formel:
{=SUMME(N(WOCHENTAG(ZEILE(INDIREKT(A1&":"&A2));2)&lt7))-SUMME((C1:C30&gt=A1)*(C1:C30&lt=A2)*(WOCHENTAG(C1:C30;2)&lt7))}
Arrayformel. {} nicht eigeben, sondern Formel mit Shift+Strg+Enter abschließen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige