4.1k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.3k Punkte)
Hallo
ich habe eine Ausgangstabelle mit folgenden Daten:

Name Rhythmus Wochentag Beginn Ende
A wöchentlich Montag 10:00 11:30
B alle 2 Wochen Dienstag 09:00 10:00
C wöchentlich Montag 14:00 15:30
D 1. Mittwoch Mittwoch 10:00 11:00
E alle 2 Wochen Donnerstag 11:00 12:00
F alle 2 Wochen Freitag 09:00 10:00
G alle 2 Wochen Dienstag 10:00 11:00
H alle 2 Wochen Montag 14:00 15:00

Ich brauche jetzt eine Aufstellung, die mir je Tag die entsprechenden Termine auflistet, wie:
3.11. A 10:00 11:30
3.11. C 14:00 15:30
3.11. H 14:00 15:00
4.11. B 9:99 10:00
usw.

Weiß jemand wie man das mit einem Code angehen kann?
Danke und Gruß Andreas

12 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

war doch recht lustige Problematik :-)
für vb Freaks noch meine lösung

gruss nighty

ausgehend vom Aktuellen Jahr wird die gewünschte Monatszahl gefordert

Erste Zeile Überschrift
Spalte A=Wochentage
Spalte B=das berechnete Datum
Spalte C=Zeit Anfang
Spalte D=Zeit Ende

Sub Termine()
Dim lngCounter As Long, DTermine As Long
Dim Lager As Date
Dim Eingabe As Integer, MTage As Integer
Do
Eingabe = InputBox("Eingabe der MonatsZahl bitte !")
Loop Until Eingabe > 0 And Eingabe < 13
ReDim Dat(Day(DateSerial(Year(Date), Eingabe + 1, 0)), 1) As String
Dim TagD() As Variant
For lngCounter = 0 To Day(DateSerial(Year(Date), Eingabe + 1, 0)) - 1
Dat(lngCounter, 0) = Format(DateSerial(Year(Date), Eingabe, lngCounter + 1), "DDD")
Dat(lngCounter, 1) = lngCounter + 1 & "." & Eingabe & "." & Year(Date)
Next lngCounter
Range("A:D").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, Orientation:=xlTopToBottom
Range("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
TagD = Range("A2:A" & ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row)
Range("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=False
For DTermine = 1 To UBound(TagD())
Range("A1").AutoFilter Field:=1, Criteria1:=TagD(DTermine, 1)
For MTage = 0 To UBound(Dat())
For TTage = 1 To ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row
If Dat(MTage, 0) = Mid(TagD(DTermine, 1), 1, 2) Then
If Cells(TTage, 3) > Lager And Cells(TTage, 2) = "" Then
Cells(TTage, 2) = Dat(MTage, 1)
Lager = Cells(TTage, 4)
End If
End If
Next TTage
Lager = 0
Next MTage
Range("A1").AutoFilter
Next DTermine
End Sub
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hi nighty,

danke für den "Nachtrag" - echt coole Lösung!!!!!
VG Andreas
...