Feiertage in Kalender eintragen
#21
Hi,

einfach die Formeln ein wenig anpassen :)

ich habe mal 2 Spalten eingefügt dann ist nicht /7 sondern /9
schon passt es
Die Bezüge in der Formel erweitert und angepasst fertig ^^
Spalten hinzufügen ist eine Arbeit von za. 10 Min um das Ding anzupassen.

.xlsx   Urlaubskalender mit Ferien - Forum.xlsx (Größe: 97,97 KB / Downloads: 7)
lg
Chris

edit ^^ ok ca 3 min für die Anpassung ^^ von 2 Spalten
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Top
#22
Hallo Ralf

Zitat:Was ist das für ein Bezug in A1?
keine Ahnung, war das schon? sonst habe ich versehentlich was markiert. Das kann gelöscht werden.
 
Zitat:Auch das Eintragen der Feiertage durch das Makro ist flexibler, da ich dann auch zusätzliche Termine in die Spalte E eintragen kann.
Das kann auch über Formel gemacht werden. (in der neuen Datei im Blatt Liste)
Zitat:Was passiert, wenn ich zwischen F und G noch zwei weitere Spalten einfüge?
Dann müssten deine Monatsformeln, Tagesformeln aber auch formeltechnisch angepasst werden, denn dann hat das Auswirkungen auf deine bestehenden Formeln oder eben wie schon erwähnt alles programmiert werden.
Wenn ich VBA nutze dann zumeist nahezu 100%, wenn ich Formeln verwendet dann auch nahezu 100%. In Foren gehe ich natürlich auf die Wünsche der Fragesteller ein und erzeuge ein gew. Mischmasch.
Was ich selber nie mache eine Gewichtung ~50% Formeln ~50% VBA, damit habe ich schlechte Erfahrungen gemacht. :) Aber das ist nur meine persönliche Einstellung dazu.

.xlsx   Urlaubskalender mit Ferien - Forum.xlsx (Größe: 104,29 KB / Downloads: 30)
lg
Chris

Edit: Blatt Urlaubskalender mit Blattschutz versehen (ohne Kennwort), U,G;D,K in den "Summen" mit aufgenommen, dazu die Tagesformel angepasst. Legende erweitert.
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Top
#23
Zitat:daß ich in einer Periode (wie bei 2 Wochen Urlaub) jeden Tag einzeln in die Liste eintragen muß.

Aber, doch, na geh; du kennst doch das hinunterziehen in Excel, nicht ?
Ist das so schwierig ?
Wie robuster du die Daten machst, wie einfacher die Formel sein können.
Top
#24
Hallo Ralf,

ich denke auch, Du könntest entweder eine möglichst formelfreie VBA-Lösung oder eine möglichst codefreie Formellösung gestalten.

Anbei habe ich mal noch meine VBA-Lösung. Eingetragen werden nur die Kürzel für Urlaub usw. Sollen da auch noch die Namen dazu?
Die Lösung berücksichtigt jedoch keine doppelte Vergabe Freizeiten, da müsste man ggf. die Vorhandenen Einträge mit neuen Einträgen kombinieren.
Ebenso fehlt ggf. noch ein Leeren der Spalten. Es werden also nur in den betreffenden Zeiträumen EInträge vorgenommen.

Im Moment steht beim ermitteln der jeweiligen Spalte irgendwo eine 7. Die kennzeichnet den Abstand von Monat zu Monat. Wenn Du zwischen den Monaten weitere Spalten einfügst, zähle sie dann einfach dazu.
Der Abstand der Halbjahre ist dort mit 40 programmiert. Auch hier gilt, wenn Du dazwischen Zeilen einfügst, entsprechend dazuzählen ...

Sub test()
'Variablendeklarationen
Dim iCnt%
Dim lStart As Date, lEnde As Date
'Schleifenzaehler auf Startwert setzen (erste Datumszeile)
iCnt = 3
'Mit dem Blatt Liste
With Sheets("Liste")
 'Schleife ueber alle gefuellten Zeilen in Spalte B ab Zeile 2
 Do While .Cells(iCnt, 2) <> ""
   'Startdatum merken
   lStart = .Cells(iCnt, 2)
   'Wenn neben Startdatum Enddatum steht,
   If .Cells(iCnt, 3) <> "" Then
     'Enddatum merken
     lEnde = .Cells(iCnt, 3)
   'Wenn nicht,
   Else
     'Enddatum = Startdatum
     lEnde = lStart
   'Ende Wenn neben Startdatum Enddatum steht,
   End If
   'Schleife ueber alle Daten solange Startdatum <= Enddatum
   Do While lStart <= lEnde
     'Suche des Startdatums im Kalender
     'Eintrag U/K/... in gefundene Zelle - offsetiert
     Sheets("Urlaubskalender").Cells(3, 3).Offset((Month(lStart) > 6) * -40, _
               7 * ((Month(lStart) Mod 6) + ((Month(lStart) Mod 6) = 0) * -6 - 1)).Resize(37, 1).Find(what:=Day(lStart), _
               LookIn:=xlValues, lookat:=xlWhole).Offset(0, 3).Value = .Cells(iCnt, 4)
     'Startdatum 1 Tag hochsetzen
     lStart = lStart + 1
   'Ende Schleife ueber alle Daten solange Startdatum <= Enddatum
   Loop
 'Ende Schleife ueber alle gefuellten Zeilen in Spalte B ab Zeile 2End Sub
 iCnt = iCnt + 1
 Loop
'Ende mit dem Blatt Liste
End With
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste