26.10.2017, 22:14
Hallo zusammen,
habe mich heute mit einem vba-Problem gequält und schlussendlich entschieden, mich hier anzumelden und um Rat zu fragen. Bin leider unerfahren, was das Macro schreiben angeht, aber bin mir sicher, dass mein Problem für euch locker zu lösen sein wird.
Es geht um ein Macro, dass eine Tabelle mit ca. 1000 Items in Zeile 1 und den zugehörigen Werten in Zeile 2 in strukturierte Tabellen aufteilt. Die Originaltabelle ist maschinell erstellt und daher steht in der ersten Zeile alles hintereinander weg ohne Struktur. Innerhalb der Items gibt es Gruppen und diese sollen jeweils einer eigenen Tabelle zugeordnet werden.
Das Grundskript steht bereits und hat bisher gut funktioniert – hier mal die relevanten Ausschnitte:
Die Einteilungen der einzelnen Tabellen (A, B,C …) hat sich jetzt allerdings verändert, daher muss das Skript geändert werden.
Mein Hauptproblem ist, dass bei den neuen Originaldaten nicht mehr bei allen Tabellen die Werte direkt aufeinander folgen. Beispielsweise würden zu Tabelle „A“ die Werte 1 bis 4 und 9 bis 15 gehören.
Wie passe ich den vorliegenden Code so an, dass auch nicht zusammenhängende Werte in die richtigen Tabellen sortiert werden?
Ich scheitere leider bei der Anpassung der Range.
Falls jemand sogar Zeit und Lust hätte kurz zu erklären, wie „Num2Col“ und die wb.Sheets Zeile hier funktionieren, wäre ich sehr dankbar und wäre dem selbstständigen Schreiben von Macros ein Stück näher :D
Vielen Dank!
Gruß,
stober
habe mich heute mit einem vba-Problem gequält und schlussendlich entschieden, mich hier anzumelden und um Rat zu fragen. Bin leider unerfahren, was das Macro schreiben angeht, aber bin mir sicher, dass mein Problem für euch locker zu lösen sein wird.
Es geht um ein Macro, dass eine Tabelle mit ca. 1000 Items in Zeile 1 und den zugehörigen Werten in Zeile 2 in strukturierte Tabellen aufteilt. Die Originaltabelle ist maschinell erstellt und daher steht in der ersten Zeile alles hintereinander weg ohne Struktur. Innerhalb der Items gibt es Gruppen und diese sollen jeweils einer eigenen Tabelle zugeordnet werden.
Das Grundskript steht bereits und hat bisher gut funktioniert – hier mal die relevanten Ausschnitte:
Code:
Call getData(1, 4, "A")
Call getData(5, 110, "B")
Call getData(111, 130, "C")
Call getData(131, 150, "D")
Call getData(151, 170, "E“)
Call….usw.
Sub
getData(ByVal colStart As Long, ByVal colEnd As Long, ByVal tName As String)
wB.Sheets("Tabelle1").Range(Num2Col(colStart) & ":" & Num2Col(colEnd)).Copy
Sheets(tName).Activate
Sheets(tName).Cells.Clear
Sheets(tName).[A1].PasteSpecial Paste:=xlPasteValues
End Sub
Function Num2Col(sNum As Long)
Num2Col = Left(Cells(1, sNum).Address(0, 0), 1 - (sNum > 26) - (sNum > 702))
End Function
Die Einteilungen der einzelnen Tabellen (A, B,C …) hat sich jetzt allerdings verändert, daher muss das Skript geändert werden.
Mein Hauptproblem ist, dass bei den neuen Originaldaten nicht mehr bei allen Tabellen die Werte direkt aufeinander folgen. Beispielsweise würden zu Tabelle „A“ die Werte 1 bis 4 und 9 bis 15 gehören.
Wie passe ich den vorliegenden Code so an, dass auch nicht zusammenhängende Werte in die richtigen Tabellen sortiert werden?
Ich scheitere leider bei der Anpassung der Range.
Falls jemand sogar Zeit und Lust hätte kurz zu erklären, wie „Num2Col“ und die wb.Sheets Zeile hier funktionieren, wäre ich sehr dankbar und wäre dem selbstständigen Schreiben von Macros ein Stück näher :D
Vielen Dank!
Gruß,
stober