VBA: Dynamisches Copy-Pasten mittels Identifier
22.04.2014 20:00:18
Hamiltonian
nachdem ich schon eine halbe Ewigkeit fleißig mitlese und mir die ein oder andere Antwort wie auch Tutorials über schwere Excelzeiten hinweg geholfen haben, muss ich mich jetzt doch mit einem eigenen Thread mal an euch wenden.
Vorab: Ich konnte in der Suche nichts Adäquates finden.
Folgende Herausforderung:
Ich habe mehrere kleinere Excellisten im Bereich zwischen 50 bis 70 Spalten und variabler Zeilenanzahl. Ich muss den Inhalt dieser Listen in eine einzige große Liste konsolidieren. Das geschicht via eines Makros; Knöpfchen drücken und los geht´s. Ich habe statisch Bereiche definiert, die eingelesen und in die große Liste gecopy-pasted weden sollen. So weit so gut, funktioniert wunderbar.
In Zukunft muss das Makro aber auch mit Listen zurecht kommen, in die Spalten eingefügt wurden, Spalten gelöscht wurden, verschoben etc. D.h. mit meinen statisch definierten Ranges komm ich hier nicht mehr weiter, da ich von der Reihenfolge her (und anschließender verformelter Weiterverarbeitung)ein Kuddelmuddel einlese. Das entscheidende Code-Snippet schaut beispielhaft so aus:
-------------
ActiveWorkbook.Sheets("Einzelliste1").Range(ActiveWorkbook.Sheets("Einzelliste1").Cells(10, 1),ActiveWorkbook.Sheets("Einzelliste1").Cells(10, 14)).Copy
ThisWorkbook.Sheets("GroßeListe").Range(ThisWorkbook.Sheets("GroßeListe").Cells(5, 7),ThisWorkbook.Sheets("GroßeListe").Cells(5, 21)).PasteSpecial xlPasteFormats
ThisWorkbook.Sheets("GroßeListe").Range(ThisWorkbook.Sheets("GroßeListe").Cells(5, 7),ThisWorkbook.Sheets("GroßeListe").Cells(5, 21)).PasteSpecial xlPasteValuesAndNumberFormats
ActiveWorkbook.Sheets("Einzelliste2).Range(ActiveWorkbook.Sheets("Einzelliste2").Cells(10,15),ActiveWorkbook.Sheets("Einzelliste2").Cells(10, 20)).Copy
ThisWorkbook.Sheets("GroßeListe").Range(ThisWorkbook.Sheets("GroßeListe").Cells(5,22),ThisWorkbook.Sheets("GroßeListe").Cells(5, 27)).PasteSpecial xlPasteFormats
ThisWorkbook.Sheets("GroßeListe").Range(ThisWorkbook.Sheets("GroßeListe").Cells(5,22), ThisWorkbook.Sheets("GroßeListe").Cells(5, 27)).PasteSpecial xlPasteValuesAndNumberFormats
-------------
Ich hab nun gedacht ich arbeite mit Identifiern, die ich unique einer Spalte zuweise. Die Einzellisten werden erst ab Zeile 7 beschrieben. Ich kann also z.B. unter dem Spaltennamen in einer ausgeblendeten Zeile Identifier zuweisen (also z.B. Key_column1)und mich dann beim Aus- und Einlesen dieser Identifier bedienen.
Also statt: "Kopiere aus Einzelliste Spalte A bis AC und füge in GroßeListe in Spalte C bis AE ein" bräuchte ich ein: "Nimm aus Einzelliste Spalte mit identifier Key_column3 und füge in GroßeListe in Spalte G ein, nimm aus Einzelliste Spalte mit identifier Key_column7 und füge in GroßeListe in Spalte J ein usw."
Ich hoffe es ist eingermaßen klar was ich suche und hoffe zu finden :-)
Ich bin an dieser Stelle für alle Ratschläge und Tipps oder Verweise auf mir noch unbekannte Threads dankbar!
Viele Grüße
Hamiltonian