1. Ich habe mehrere Tabellenblätter
2. In jedem Blatt Stehen in den ersten 4 Spalten A-D Namen / Bezeichnungen
3. In den Folgenden Spalten (Anzahl variiert von T bis hin zu CZ) stehen einfache Formeln der Form ('Wert aus Tabellenblatt 1' * 'Wert aus einer anderen Exceldatei')
also: In E2 steht z.b.: ='Tabelle1'!E2 * 'C:\blabla[bla.xlsm]Tabelle1!$E2
In E4 = 'Tabelle1'!E4 * 'C:\blabla[bla.xlsm]Tabelle1!$E4
In J6 = 'Tabelle1'!J6 * 'C:\blabla[bla.xlsm]Tabelle1!$J6 usw.
4. Die erste Zeile dient zur Spaltenidentifikation (Name1, Name2, Name3, Name4, Formel1, Formel2, ....)
5. Über ein UserForm habe ich es geschafft neue Zeilen einzufügen. Das Makro dazu:
Dim emptyRow2 As Long
Sheets("Tabelle1").Select
emptyRow2 = WorksheetFunction.CountA(Range("A:A")) + 1
Cells(emptyRow2, 1).Value = TextBox_A.Value
Cells(emptyRow2, 2).Value = TextBox_B.Value
Cells(emptyRow2, 3).Value = TextBox_C.Value
Cells(emptyRow2, 4).Value = TextBox_D.Value
Nun mein Problem:
Im ersten Schritt sollen die Daten nach Spalte A, dann nach B sortiert werden. Dank Makrorekorder habe ich folgendes im Gebrauch:
Range("A1:T300").Select
ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Add Key _
:=Range("A2:A300"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort.SortFields.Add Key _
:=Range("B2:B300"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Tabelle1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Im Folgenden sollen die Formeln aus der ersten Formelzeile (also in dem Fall Zeile 2) an alle darunterliegenden Formeln übernommen werden. Das habe ich so gelöst:
Range("E2:T2").Select
Selection.AutoFill Destination:=Range("E2:T300"), Type:=xlFillDefault
Wie ihr sehr ist das ganze sehr unelegant und wenig dynamisch. Ich musste bislang für jedes Tabellenblatt die Spaltenanzahl in beiden Makros manuell anpassen. Weiterhin bin ich bei der Erstellung der "Makros" davon ausgegangen, dass die Liste letzendlich maximal 299 Positionen umfasst. Davon abgesehen ist es selbst für mich als Neuling ersichtlich, dass bei dieser Vorgehensweise Ressourcen verschwendet werden. Als Beispiel befinden sich in einem Tabellenblatt 100 Spalten. Multipliziert mit den 300 Zeilen sind wir bei 30.000 Formeln die übernommen werden müssen, obwohl vieleicht nur 200 Zeilen in Spalte A-D einen Namen enthalten.
Vieleicht könnt Ihr mir helfen einen eleganteren Weg zu entwickeln. Ich wäre für jede Hilfe dankbar.
Liebe Grüße
Martin