Ein Kollege von mir ist leider krankheitsbedingt ausgefallen, jetzt "darf" ich mich mit seinen Macros beschäftigen (selbst Anfänger...).
Wir haben eine Zielliste, die via Macro upgedated wird (von Ausgangsliste). Anstatt neue Reihen der Zielliste hinzuzufügen wird die Zielliste jedesmal komplett neu erstellt.
Leider weiss ich nicht wie ich das Macro entsprechend anpassen muss, dass nur noch ergängzt wird.
Habt Ihr vielleicht eine Idee?
Schon mal vielen Dank und schöne Grüsse
Felix
Anbei das Sheet
https://www.herber.de/bbs/user/71343.xls
Anbei das Macro:
Sub DatenVerteilen()
Dim wksAusgang As Worksheet
Dim sName As String, vAlter As Variant
Dim arrAlter() As Variant, arrEintrag() As Variant
Dim arrZiel() As Worksheet
Dim Zeile As Long, ZeileZiel As Long, iZiel As Long, iEintrag As Long
Dim StatusCalc
Set wksAusgang = Worksheets("Ausgangsliste")
'Zuordnen von Alter und Zieltabellen
iZiel = 2 'Anzahl Altersangaben
ReDim arrAlter(1 To iZiel): ReDim arrZiel(1 To iZiel)
arrAlter(1) = "jung": Set arrZiel(1) = Worksheets("Zielliste 1")
arrAlter(2) = "alt": Set arrZiel(2) = Worksheets("Zielliste 2")
'sich wiederholende Einträge je Eintrag in den Zieltabellen
iEintrag = 3 'Anzahl der Einträge
ReDim arrEintrag(1 To iEintrag)
arrEintrag(1) = 2009: arrEintrag(2) = 2010: arrEintrag(3) = 2011
'Makrobremsen lösen
With Application
.EnableEvents = False
StatusCalc = .Application.Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
'Ziellisten - Aldaten löschen
For iZiel = 1 To UBound(arrZiel)
With arrZiel(iZiel)
ZeileZiel = .Cells(.Rows.Count, 1).End(xlUp).Row
If ZeileZiel > 1 Then
.Range(.Rows(2), .Rows(ZeileZiel)).ClearContents
End If
End With
Next
'Zeilen in Ausgangsliste abarbeiten
With wksAusgang
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
sName = .Cells(Zeile, 1)
vAlter = .Cells(Zeile, 2)
For iZiel = 1 To UBound(arrAlter)
'Index im Array ermitteln durch Vergleich von Alter mit den Arrayinhalten
If vAlter = arrAlter(iZiel) Then
With arrZiel(iZiel)
'Letzte Datenzeile im Zielblatt
ZeileZiel = .Cells(.Rows.Count, 1).End(xlUp).Row
'Werte in Zieltabelle eintragen
For iEintrag = 1 To UBound(arrEintrag)
.Cells(ZeileZiel + iEintrag, 1) = sName
.Cells(ZeileZiel + iEintrag, 2) = arrEintrag(iEintrag)
.Cells(ZeileZiel + iEintrag, 3) = vAlter
Next
End With
Exit For
End If
Next
Next
End With
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
End With
End Sub