Anzeige
Archiv - Navigation
1900to1904
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
Inhaltsverzeichnis

Arbeitsfreie Tage berechnen

Arbeitsfreie Tage berechnen
09.10.2022 10:20:24
oli
Schönen Vormittag,
ich habe folgendes Problem an dem ich schon länger verzweifle.
Ich möchte berechnen, wie viele Tage ich durch meine Urlaubstage und Feiertage gesamt frei habe.
Dazu habe ich einen Bereich mit sämtlichen Feiertagen und eine Liste (Spalte) mit meinen Urlaubstagen. In der Zelle daneben möchte ich nun berechnen wie viele Tage ich durch diesen Urlaubstag gesamt frei habe.
Zb. Ich nehme mir Mo Urlaub und Dienstag ist ein Feiertag dann wäre das Ergebnis 4 Tage (Sa bis Di)
Klar müsste diese Formel wenn ich mir Mo und Dienstag Urlaub nehme in diesen beiden Zeilen das gleiche Ergebnis liefern.
Eigenltich bin ich in Excel wirklich gut, nur mit Matrixformeln kenne ich mich sogut wie gar nicht aus. Wahrscheinlich brauche ich hiefür aber eine Matrixformel?
Die Formel könnte natürlich auch auf mehrere Zellen aufgeteilt sein.
Hat wer Ideen?
Danke im Voraus!
Lg Oli
Beispiel Excel: https://www.herber.de/bbs/user/155568.xlsx

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsfreie Tage berechnen
09.10.2022 11:13:59
onur
Es erschwert gewaltig die Formelerstellung, dass du die Urlaubstage einzeln (mehrere Zeilen) aufgelistet hast, statt sie, wie es sich gehört, als Von-Bis-Intervall (2 Spalten) anzugeben.
AW: Arbeitsfreie Tage berechnen
09.10.2022 12:21:51
Daniel
Hi
Wird mit Formeln vermutlich schwierig, weil du dazu ein paar Dinge brauchst, die sich mit Formeln nicht oder nur schlecht darstellen lassen.
Mit einer per VBA geschriebenen Funktion könnte ich mir schon was vorstellen.
Allerdings müsstest du in deiner Datei ein bisschen was ändern:
1. Urlaub als "Von Startdatum Bis Enddatum angeben" und nicht jeden Tag einzeln.
2. die Feiertage auch als echte Datumswerte in die Tabelle einstellen und nicht als Text.
Gruß Daniel
Anzeige
AW: Arbeitsfreie Tage berechnen
09.10.2022 12:39:21
Oli
Hallo Daniel,
danke für die Rückmeldung.
Die Feiertage sind natürlich "echte Datumswerte" habe für das Bsp-Excel die Daten allerdings versehentlich als Text kopiert.
Da ich die einzelnen Urlaubstage brauche, kann ich leider, zumindest nicht ausschließlich, eine von - bis Darstellung gebrauchen.
Villeicht kannst du mir kurz deine Idee für VBA zeigen. Ich kann mir dann vll etwas so daraus basteln, das es für mich passt?
AW: Arbeitsfreie Tage berechnen
09.10.2022 13:30:37
Daniel
Hi
Hab nochmal nachgedacht, es geht auch so wir du willst, für jeden Urlaubstage einzeln, ohne von-bis
Das Prinzip ist folgenden:
Erstellen eine Do-,Schleife
Darin:
Erhöhst du den Tag um 1 und prüfst, ob dieser Tag
Ein Wochenende ist ODER in der Feiertagsliste vorkommt ODER in deiner Urlaubstagsliste vorkommt.
Wenn als drei nicht zutrifft, beendest du die Schleife.
Wenn eine der Bedingungen erfüllt ist, erhöhst du die Anzahl der freien Tage um 1 und setzt die Schleife fort.
Das ganze dann auch in die andere Richtung mit den davorliegenden Tagen.
Als Code etwa so (Achtung, code ist nicht getestet, bitte nicht kopieren, sondern lesen, verstehen, selberschreiben)

Funktion FreieTage(Uraubstag AS Date, ListeFeiertage AS Range, ListeUrlaub AS range) AS long
Dim Tag AS Date
With WorksheetFunction
Tag = Urlaubstag
Do
Tag = Tag + 1
If .Weekday(Tag, 2) > 5 OR .CountIf(ListeFeiertage, Tag) > 0 OR .CountIf(ListeUrlaub, Tag) > 0 then
FreieTage = FreieTage + 1
Else
Exit Do
End if
Loop
Tag = Urlaubstag
Do
Tag = Tag - 1
If .Weekday(Tag, 2) > 5 OR .CountIf(ListeFeiertage, Tag) > 0 OR .CountIf(ListeUrlaub, Tag) > 0 then
FreieTage = FreieTage + 1
Else
Exit Do
End if
Loop
FreieTage = FreieTage + 1
End With
End Function
Diese Schleife mit Abbruch ist in einer Excelformel nicht darstellbar, deswegen VBA.
Gruß Daniel
Anzeige
AW: Arbeitsfreie Tage berechnen
10.10.2022 19:58:25
Oli
DANKE, DANKE, DANKE. :)
Manchmal ist es so einfach!
Habs mit der Vorlage super hinbekommen. Funktion macht genau das was ich brauche! Danke!
LG Oliver
AW: Arbeitsfreie Tage berechnen
09.10.2022 11:14:22
Sigi.21
Hallo Oli,
dafür gibt es Nettoarbeitstage.Intl().
Aber dafür musst du deine Feiertage u. Urlaube als echtes Datum anlegen. Deine "Feiertage" sind leider Text, und damit kannst du nicht rechnen.
Gruß Sigi
AW: Arbeitsfreie Tage berechnen
09.10.2022 12:42:38
Oli
Hallo Sigi,
Feiertage sind natürlich "echte Datums", habe ich bei der Bsp-Excel beim Kopieren leider als Text kopiert.
Was hilft mir hier Nettoarbeitstage.Intl(). Berechnet ja nur die Arbeitstage zwischen zwei Tagen?
Lg Oli
Anzeige
AW: Arbeitsfreie Tage berechnen
09.10.2022 15:03:34
Sigi.21
Hallo Oli,
ja klar. Aber als Excel-Profi kannst du doch einen Schritt weiterdenken:
Anzahl Tage - NettoArbTage = Freie Tage (s. Mappe)
Gruß Sigi
https://www.herber.de/bbs/user/155573.xlsx
Und das "Sahnehäubchen" ist, …
09.10.2022 11:35:06
Günther
… dass die kalendarischen Daten im Blatt Urlaub in der DE-Schreibweise vorliegen, im Blatt Urlaub aber als AT-Schreibweise. Schick! ☹
 
Gruß
Günther  |  mein Excel-Blog
AW: Und das "Sahnehäubchen" ist, …
09.10.2022 11:36:26
onur
SO sind halt die "Excel-Profis".
Anzeige
AW: Und das "Sahnehäubchen" ist, …
09.10.2022 12:44:00
Oli
Für das Problem ja kaum relevant, oder?
Aber danke für den Kommentar!
Lg Oli
AW: Und das "Sahnehäubchen" ist, …
09.10.2022 19:38:39
onur
"Für das Problem ja kaum relevant" ? Oh doch! Keiner mit "Excel-Profi" oder "Excel gut" würde eine Tabelle SO aufbauen und dadurch das Problem, was er hat, zu 90% selbst produzieren.
AW: Manche Menschen überzeugen weder
09.10.2022 19:38:40
Sulprobil
technisch noch menschlich.
Du erkennst sie (hier z. B.) an ihrem Spott und an ihren wenig überzeugenden Excel Kenntnissen.
Ich rege an, Ihnen nicht zu danken.
Viele Grüße,
Bernd
AW: Manche Menschen überzeugen weder
09.10.2022 19:41:54
onur
Und du hilfst ja immer Jedem, damit die Welt sehen kann, was für ein Excel-Profi du bist? Was greifst du MICH jetzt an? Geht es dir noch gut?
Anzeige
AW: Nimm' sbFreeDays
09.10.2022 16:01:21
Sulprobil
Hallo,
ich schlage vor, sbFreeDays zu verwenden:

Function sbFreeDays(dtDay As Date, _
vHolidays As Variant, _
vVacationDays As Variant) As Variant
'(C) (P) Sulprobil.com v0.1 09-Oct-2022
'Given any date, a list of bank holidays, and a list of
'vacation days, sbFreeDays calculates the number of free
'days, the first free day and the last free day and
'returns these three values as a variant. Saturdays and
'Sundays are also treated as free days.
Dim dt As Date
Dim dtFirst As Date
Dim dtLast As Date
Dim oFree As Object
Dim v
'Initialize
Set oFree = CreateObject("Scripting.Dictionary")
For Each v In vHolidays: oFree(CDate(v)) = 1: Next v
For Each v In vVacationDays: oFree(CDate(v)) = 1: Next v
'Look for first free day
dt = dtDay - 1
Do While Weekday(dt, vbMonday) > 5 Or oFree.exists(dt)
dt = dt - 1
Loop
dtFirst = dt + 1
'Look for last free day
dt = dtDay + 1
Do While Weekday(dt, vbMonday) > 5 Or oFree.exists(dt)
dt = dt + 1
Loop
dtLast = dt - 1
sbFreeDays = Array(dtLast - dtFirst + 1, dtFirst, dtLast)
End Function
Anbei eine Beispieldatei (ohne Gewähr, aber ich verwende einen aktuellen Virenscanner).
https://www.herber.de/bbs/user/155574.xlsm
Viele Grüße,
Bernd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige