Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Feiertage in Kalender eintragen
#11
Hallo Ralf,

so sollte es gehen:


Code:
Sub Eintrag_Urlaub()
   Dim rng As Range
   Dim gef As Range
   Dim loZeile As Long
   Dim loRow As Long
   Dim loCol As Long
   Dim loSpalte As Long
   Dim loUTag As Long
   Dim loHj As Long
   Dim loLetzte As Long
   Dim wks As Worksheet
   Dim wks2 As Worksheet
   Dim dteStart As Date
   Dim dteEnde As Date
   Dim dteLauf As Date
  
   Set wks2 = Sheets("Urlaubskalender")
   Set wks = Sheets("Liste") 'Eintrags-Tabelle
   loLetzte = wks.Cells(Rows.Count, 2).End(xlUp).Row          'letzte belegte Zeile in B (2)
   If loLetzte = 2 Then Exit Sub
   Application.ScreenUpdating = False
   Application.EnableEvents = False
       For loZeile = 3 To loLetzte
        If wks.Cells(loZeile, 1) = "xxx" Then
            loSpalte = 1
        Else
            loSpalte = 2
        End If
      dteStart = wks.Range("B" & loZeile)
      dteEnde = wks.Range("C" & loZeile)
      If dteEnde = 0 Then dteEnde = dteStart
        For loUTag = dteStart To dteEnde
            loCol = ((Month(loUTag) - 1) Mod 6) * 7 + 3
            If Month(loUTag) > 6 Then loHj = 39
            Set rng = Range(wks2.Cells(3 + loHj, loCol), wks2.Cells(39 + loHj, loCol))
            loRow = Application.WorksheetFunction.Match(loUTag, rng, 0) + 2
            If wks2.Cells(loRow + loHj, loCol + 2) = "" And loUTag Mod 7 > 1 Then wks2.Cells(loRow + loHj, loCol + 2 + loSpalte) = wks.Cells(loZeile, 4)
            loHj = 0
        Next
    Next
   Application.EnableEvents = True
   Application.ScreenUpdating = True
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#12
Ich möchte etwas anderes vorschlagen. Angewendet fur januar bis juli.


Angehängte Dateien
.xlsb   __Urlaubskalender mit Ferien - Forum.xlsb (Größe: 53,04 KB / Downloads: 9)
Antworten Top
#13
Hallo,

dann würde ich es immer noch so machen:


.xlsb   Urlaubskalender mit Ferien - Forum.xlsb (Größe: 65 KB / Downloads: 9)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#14
Hi Edgar,

(11.04.2016, 15:30)BoskoBiati schrieb: so sollte es gehen:

ja, so geht es.
Danke. Die anderen zwei probiere ich nachher.
Antworten Top
#15
Hallo Ralf,

warum überhaupt VBA?
Du hast den Grundaufbau mit Formeln gemacht ich würde gleich alles über Formeln machen oder alles über VBA.

Wenn du willst baue ich Dir das alles mit Formeln nach. :)

lg
Chris
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#16
Hi,

OK, anbei der Formelversuch.
Lauffähig ab Version 2007, da ich intelligente Tabellen verwendet habe.
 
Alles über Formeln in Verbindung mit bedingter Formatierung gelöst.
Falls die Datei „Gefallen“ findet, könntet Ihr ja ggf. selbige bei den Komplettlösungen anhängen.
 
Lg
Chris


p.s ich habe auch mal die Schulferien farblich gekennzeichnet! Passt das so? Oder sollen diese "optisch" nicht erscheinen.


Angehängte Dateien
.xlsx   Urlaubskalender mit Ferien - Forum.xlsx (Größe: 82,62 KB / Downloads: 14)
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#17
Hi,

(11.04.2016, 15:51)snb schrieb: Ich möchte etwas anderes vorschlagen. Angewendet fur januar bis juli.

die Lösung für die Spalten B und C gefällt mir, nur in D steht immer "ddd".

Die INDEX/VERWEIS-Formel trägt alle Tage bei Name "xxx" ein und ein weiterer Nachteil ist für mich, daß ich in einer Periode (wie bei 2 Wochen Urlaub) jeden Tag einzeln in die Liste eintragen muß.
Antworten Top
#18
Hi Edgar,

(11.04.2016, 19:42)BoskoBiati schrieb: dann würde ich es immer noch so machen:

da sind in den Formeln #BEZUG-Fehler drin.
Antworten Top
#19
Hallo,

ich hab da auch mal was vorbereitet:


.xlsb   Urlaubskalender mit Ferien.xlsb (Größe: 83,12 KB / Downloads: 6)

die vorhergehende Version war aus dem Muster von snb produziert, da hatte ich ganz übersehen, dass da Formeln drin waren. die ddd kriegst Du weg, wenn Du in den Formeln daraus TTT machst!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#20
Hi Chris,

(12.04.2016, 10:19)chris-ka schrieb: warum überhaupt VBA?
Du hast den Grundaufbau mit Formeln gemacht ich würde gleich alles über Formeln machen oder alles über VBA.

Ich habe es über VBA zu lösen versucht, weil ich dachte, ich kann es einfacher für mehr Namen (weitere Spalten zwischen F und G) anpassen. Und das hat sich auch bewahrheitet, mit Deinen Formeln in F und G steige ich gar nicht durch. Schon wenn ich die Formel in F durch absolut setzen der Spalte C für G auf diesselbe Datumsspalte setzen will, stehen andere Sachen in F als vorher.

Auch das Eintragen der Feiertage durch das Makro ist flexibler, da ich dann auch zusätzliche Termine in die Spalte E eintragen kann.

Die Formel der Spalte G bezieht sich nicht, wie die in F auf die Datumsspalte C, sondern dann auf die Tagesspalte D.

Was passiert, wenn ich zwischen F und G noch zwei weitere Spalten einfüge?
Was ist das für ein Bezug in A1?

Urlaubskalender
ABCDEFG
12016
2KWJanuar  xxxyyyy
353  
4 
5 
6 
71FrNeujahr
82Sa
93So
1014MoU
115DiU
126MiDreikönig
137DoU
148FrU
159Sa
1610So
17211MoG
1812Di
1913Mi
2014Do
2115Fr
2216Sa
2317So
24318Mo
2519Di
2620Mi
2721Do
2822Fr
2923Sa
3024So
31425Mo
3226Di
3327Mi
3428Do
3529Fr
3630Sa
3731So
38  
39 
40Summe:4

verwendete Formeln
Zelle Formel Bereich N/A
A1=T50A1:T45
C2=TEXT((KÜRZEN((ZEILE()-1)/39;)*6+1+KÜRZEN((SPALTE()-1)/7;))*30;"MMMM")
B3=WENN(C9="";"";KALENDERWOCHE(C9;21))
B10,B17,B24,B31=KALENDERWOCHE(C10;21)
B38=WENN(C38="";"";KALENDERWOCHE(C38;21))
C3:C39=WENN(MONAT(DATUM($B$1;KÜRZEN((SPALTE()-3)/7;)+1+(ZEILE()>40)*6;1)-WOCHENTAG(DATUM($B$1;KÜRZEN((SPALTE()-3)/7;)+1+(ZEILE()>40)*6;1);2)+REST(ZEILE();40)-2)=KÜRZEN((SPALTE()-3)/7;)+1+(ZEILE()>40)*6;DATUM($B$1;KÜRZEN((SPALTE()-3)/7;)+1+(ZEILE()>40)*6;1)-WOCHENTAG(DATUM($B$1;KÜRZEN((SPALTE()-3)/7;)+1+(ZEILE()>40)*6;1);2)+REST(ZEILE();40)-2;"")
D3: D39=WENN(C3="";"";C3)
E3:E39=WENNFEHLER(INDEX(Ferien!$T$5:$T$28;VERGLEICH(C3;Ferien!$R$5:$R$28;0);1);"")
F3:G39{=INDEX(termine[[#Alle];[ ]];MAX(((C3>=termine[Anfang])*(termine[Name]=F$2)*(C3<>"")*((termine[Ende]="")+(C3<=termine[Ende]))*WENNFEHLER(REST(C3;7)>1;0)*(WENNFEHLER(SVERWEIS(C3;ft;4;0)<>"x";1)))*(ZEILE(termine[Anfang]))))}$F$3
F40=ZÄHLENWENN(F3:F39;"u")
{} Matrixformel mit Strg+Umschalt+Enter abschließen
Matrixformeln sind durch geschweifte Klammern {} eingeschlossen
Diese Klammern nicht eingeben!!

Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 19.08 einschl. 64 Bit

Antworten Top


Gehe zu:


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