ich habe eine Excelfile mit zwei Tabellenbittern. Im ersten Tabellenblatt sind Veranstaltungen aufgelistet mit Anfangsdatum und Enddatum.
Auf dem zweiten ist ein Jahreskalender. Hier sollen pro Tag überprüft werden, ob eine Veranstaltung ansteht für diesen Tag.
Meine jetzige erfüllt zwar seinen Zweck. Aber er ist sehr sehr schlecht und langsam. Meine VBA Kenntnisse haben nicht für mehr angepasst. Kann den Code optimieren, damit er schneller wird? Pro Tag sind es aktuell max. 4 Veranstaltungen.
Eine Beispielsdatei folgt gleich.
Hier ein Auszug aus der Formel - exemplarisch für die ersten Januartage
Sub Januar()
Cells(3, 2).FormulaArray = _
"=IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-1],ROW(R1:R999)),ROW(Veranstaltungen!R1C2))),"""")
&CHAR(10)&IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-1],ROW(R1:R999)),ROW(Veranstaltungen!R2C2))),"""")"
Cells(3, 2).Copy
Cells(3, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells(3, 3).FormulaArray = _
"=IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-2],ROW(R1:R999)),ROW(Veranstaltungen!R3C2))),"""")
&CHAR(10)&IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-2],ROW(R1:R999)),ROW(Veranstaltungen!R4C2))),"""")"
Cells(3, 3).Copy
Cells(3, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells(4, 2).FormulaArray = _
"=IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-1],ROW(R1:R999)),ROW(Veranstaltungen!R1C2))),"""")
&CHAR(10)&IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-1],ROW(R1:R999)),ROW(Veranstaltungen!R2C2))),"""")"
Cells(4, 2).Copy
Cells(4, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells(4, 3).FormulaArray = _
"=IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-2],ROW(R1:R999)),ROW(Veranstaltungen!R3C2))),"""")
&CHAR(10)&IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-2],ROW(R1:R999)),ROW(Veranstaltungen!R4C2))),"""")"
Cells(4, 3).Copy
Cells(4, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells(5, 2).FormulaArray = _
"=IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-1],ROW(R1:R999)),ROW(Veranstaltungen!R1C2))),"""")
&CHAR(10)&IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-1],ROW(R1:R999)),ROW(Veranstaltungen!R2C2))),"""")"
Cells(5, 2).Copy
Cells(5, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells(5, 3).FormulaArray = _
"=IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-2],ROW(R1:R999)),ROW(Veranstaltungen!R3C2))),"""")
&CHAR(10)&IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-2],ROW(R1:R999)),ROW(Veranstaltungen!R4C2))),"""")"
Cells(5, 3).Copy
Cells(5, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells(6, 2).FormulaArray = _
"=IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-1],ROW(R1:R999)),ROW(Veranstaltungen!R1C2))),"""")
&CHAR(10)&IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-1],ROW(R1:R999)),ROW(Veranstaltungen!R2C2))),"""")"
Cells(6, 2).Copy
Cells(6, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells(6, 3).FormulaArray = _
"=IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-2],ROW(R1:R999)),ROW(Veranstaltungen!R3C2))),"""")
&CHAR(10)&IFERROR(INDEX(Veranstaltung,SMALL(IF(Anfangsdatum=RC[-2],ROW(R1:R999)),ROW(Veranstaltungen!R4C2))),"""")"
Cells(6, 3).Copy
Cells(6, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Gruß
Kasimir