Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Arbeitstage ohne Feiertag in VBA

Arbeitstage ohne Feiertag in VBA
19.02.2005 16:21:33
günter
hallo ng`s
habe in excelxp ein kleines programm geschrieben.
nun möchte ich die differenz (tage) von zwei datumseinträgen in
einer userform berechen, dabei sollen samstage, sonntage und feiertage
abgezogen werden - also rein die arbeitstage ermittel werden.
gib es in vba evtl. eine funktion dafür, habe bisher keine gefunden.
für einen tipp wäre ich sehr dankbar.
gruß
günter
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitstage ohne Feiertag in VBA
Horst
Die Funktion NETTOARBEITSTAGE()
Horst
AW: Arbeitstage ohne Feiertag in VBA
Sigi
Hallo Günter,
hier eine Funktion ...

Function Arbeitstage(AnfDatum As Date, EndDatum As Date, _
FreieTage As Excel.Range) As Long
Dim Datum As Date
Dim Tage As Long
Dim Istfrei As Boolean
Dim FreiTag As Range
If AnfDatum <= EndDatum Then
For Datum = AnfDatum To EndDatum
Istfrei = False
If Weekday(Datum, vbMonday) < 6 Then
For Each FreiTag In FreieTage
If Datum = FreiTag.Value Then
Istfrei = True
Exit For
End If
Next FreiTag
If Not Istfrei Then
Tage = Tage + 1
End If
End If
Next Datum
Else
Tage = ""
End If
Arbeitstage = Tage
End Function

Gruß
Sigi
Anzeige
AW: Arbeitstage ohne Feiertag in VBA
20.02.2005 12:49:14
g_geunter
Danke für euere schnelle Hilfe!
Werde die Vorgschläge gleich ausprobieren.
Gurß
günter

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Arbeitstage ohne Feiertag in VBA


Schritt-für-Schritt-Anleitung

Um in Excel die Anzahl der Arbeitstage ohne Wochenenden und Feiertage zu berechnen, kannst Du die folgende VBA-Funktion verwenden. Diese Funktion nennt sich Arbeitstage und nimmt zwei Datumswerte sowie einen Bereich für Feiertage als Parameter.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden Code in das Modul:
Function Arbeitstage(AnfDatum As Date, EndDatum As Date, _
FreieTage As Excel.Range) As Long
    Dim Datum As Date
    Dim Tage As Long
    Dim Istfrei As Boolean
    Dim FreiTag As Range
    If AnfDatum <= EndDatum Then
        For Datum = AnfDatum To EndDatum
            Istfrei = False
            If Weekday(Datum, vbMonday) < 6 Then
                For Each FreiTag In FreieTage
                    If Datum = FreiTag.Value Then
                        Istfrei = True
                        Exit For
                    End If
                Next FreiTag
                If Not Istfrei Then
                    Tage = Tage + 1
                End If
            End If
        Next Datum
    Else
        Tage = ""
    End If
    Arbeitstage = Tage
End Function
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Du kannst nun die Funktion Arbeitstage in Deinen Excel-Formeln verwenden.

Häufige Fehler und Lösungen

  • Fehler: Funktion gibt einen Fehler aus

    • Lösung: Stelle sicher, dass die Datumswerte korrekt formatiert sind und der Bereich für die Feiertage korrekt angegeben ist.
  • Fehler: Ergebnisse sind nicht wie erwartet

    • Lösung: Überprüfe, ob die Feiertage im richtigen Format in Deinem Excel-Arbeitsblatt stehen und ob die Datumswerte innerhalb des angegebenen Bereichs liegen.

Alternative Methoden

Falls Du keine VBA-Lösungen nutzen möchtest, kannst Du auch die integrierte Excel-Funktion NETTOARBEITSTAGE verwenden. Diese Funktion berechnet die Anzahl der Arbeitstage zwischen zwei Daten unter Berücksichtigung von Feiertagen.

Die Syntax lautet:

=NETTOARBEITSTAGE(Startdatum; Enddatum; [Feiertage])

Hierbei kannst Du die Feiertage als optionalen Parameter hinzufügen, um die Berechnung zu verfeinern.


Praktische Beispiele

Beispiel für die Verwendung der Arbeitstage-Funktion:

  • Angenommen, Du möchtest die Arbeitstage zwischen dem 01.01.2023 und dem 31.01.2023 ohne Feiertage berechnen. Deine Formel könnte wie folgt aussehen:
=Arbeitstage(DATUM(2023;1;1); DATUM(2023;1;31); A1:A10)

Hierbei steht A1:A10 für den Bereich, in dem Deine Feiertage aufgelistet sind.


Tipps für Profis

  • Nutze benannte Bereiche: Wenn Du regelmäßig mit bestimmten Feiertagen arbeitest, kannst Du diesen Bereich benennen (z.B. Feiertage), um die Lesbarkeit Deiner Formeln zu erhöhen.

  • Dynamische Datumsangaben: Erstelle dynamische Formeln, die automatisch die aktuellen Daten berücksichtigen, um die Berechnungen immer aktuell zu halten.


FAQ: Häufige Fragen

1. Wie kann ich die Funktion anpassen, um nur bestimmte Feiertage auszuschließen? Du kannst die Liste der Feiertage im Bereich FreieTage anpassen, um nur die Feiertage anzugeben, die Du ausschließen möchtest.

2. Gibt es eine Möglichkeit, die Arbeitstage ohne Wochenenden und Feiertage in einer Tabelle grafisch darzustellen? Ja, Du kannst die Ergebnisse der Arbeitstage-Funktion in einem Diagramm darstellen, um die Anzahl der Arbeitstage über verschiedene Zeiträume hinweg zu visualisieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige