Excel 2010 Makro: Intelligentes Kopieren von Daten in 2 Tabellenblättern
Hallo 
Ich bin Einsteiger in VBA, beziehungsweise möchte lernen, Makros zu schreiben und habe dafür eine Testaufgabe bekommen. Ich habe 2 Tabellenblatter. In diesen ist jeweils eine Tabelle mit teilweise unterschiedlichen Inhalten. Das Makro soll in der Kopfzeile von Tabelle2 gucken, ob es die Überschriften der Spalten auch uin Tabelle1 gibt und wenn ja, die Werte aus Tabelle1 die unter dieser Überschrift stehen in die entsprechende Spalte in Tabelle2 kopieren. Dabei soll es aber auch schauen ob die Zeile an dieser Stelle überhaupt frei ist, und wenn nicht, eine Zeile weiter runtergehen (oder eben so weit wie nötig). Bilder der Tabellen sind angehängt.
Es wäre super wenn man das Skript noch erklären könnte, bzw. Kommentare unter die Befehle schreiben könnte, damit ich das verstehen und lernen kann.
Vielen Dank im Vorraus
Ich bin Einsteiger in VBA, beziehungsweise möchte lernen, Makros zu schreiben und habe dafür eine Testaufgabe bekommen. Ich habe 2 Tabellenblatter. In diesen ist jeweils eine Tabelle mit teilweise unterschiedlichen Inhalten. Das Makro soll in der Kopfzeile von Tabelle2 gucken, ob es die Überschriften der Spalten auch uin Tabelle1 gibt und wenn ja, die Werte aus Tabelle1 die unter dieser Überschrift stehen in die entsprechende Spalte in Tabelle2 kopieren. Dabei soll es aber auch schauen ob die Zeile an dieser Stelle überhaupt frei ist, und wenn nicht, eine Zeile weiter runtergehen (oder eben so weit wie nötig). Bilder der Tabellen sind angehängt.
Es wäre super wenn man das Skript noch erklären könnte, bzw. Kommentare unter die Befehle schreiben könnte, damit ich das verstehen und lernen kann.
Vielen Dank im Vorraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 246283
Url: https://administrator.de/forum/excel-2010-makro-intelligentes-kopieren-von-daten-in-2-tabellenblaettern-246283.html
Ausgedruckt am: 20.02.2025 um 19:02 Uhr
7 Kommentare
Neuester Kommentar
Hallo Jenson, Willkommen auf Administrator.de!
Deine Bilder hast du leider nicht richtig hochgeladen, hier aber trotzdem ein Beispiel-Sheet nach deiner Beschreibung: CompareAndCopy_246283.xlsm. Kommentare befinden sich im Code.
Grüße Uwe
1. Im Ursprungsbeitrag(Frage) auf Bearbeiten klicken
2. Auf den Tab Bilder wechseln und mit Bild hinzufügen ein Bild hinzufügen
3. Den angezeigten Bildcode kopieren und in deine Kommentar/Beitrag einfügen
Deine Bilder hast du leider nicht richtig hochgeladen, hier aber trotzdem ein Beispiel-Sheet nach deiner Beschreibung: CompareAndCopy_246283.xlsm. Kommentare befinden sich im Code.
Sub SearchAndCopy()
Dim ws1 As Worksheet, ws2 As Worksheet, f As Range, cell As Range, rngWert As Range, currentTarget As Range, rngContent As Range
'Tabellenblätter referenzieren
Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
' Für jede Überschrift in Tabelle2
For Each cell In ws2.Range("A1", ws2.Cells(1, Columns.Count).End(xlToLeft))
' Für jede Überschrift im Bereich der Überschriften in Tabelle1
With ws1.Range("A1", ws1.Cells(1, Columns.Count).End(xlToLeft))
'Suche die aktuelle Überschrift in Tabelle2 im Bereich von Tabelle1
Set f = .Find(cell.Value, LookIn:=xlValues, LookAt:=xlWhole)
'Nur wenn die Überschrift gefunden wurde ...
If Not f Is Nothing Then
' belegten Bereich unter der jeweiligen Überschrift ermitteln
Set rngContent = ws1.Range(f.Offset(1, 0), ws1.Cells(Rows.Count, f.Column).End(xlUp))
' für jede Zelle im belegten Bereich ...
For Each rngWert In rngContent
' Bereich in Tabelle2 eine Zeile nach unten verschieben
Set currentTarget = cell.Offset(1, 0)
' Bereich solange nach unten verschieben bis eine nicht leere Zelle kommt
While currentTarget.Value <> ""
Set currentTarget = currentTarget.Offset(1, 0)
Wend
'Schreibe den Inhalt in die Zielzelle
currentTarget.Value = rngWert.Value
Next
End If
End With
Next
End Sub
Grüße Uwe
So fügt man Bilder zum Beitrag hinzu:
1. Im Ursprungsbeitrag(Frage) auf Bearbeiten klicken2. Auf den Tab Bilder wechseln und mit Bild hinzufügen ein Bild hinzufügen
3. Den angezeigten Bildcode kopieren und in deine Kommentar/Beitrag einfügen
Zitat von @Jensson:
die Bilder sind jetzt richtig hochgeladen.Ich habe das Makro mal in dem Excel Dokument eingefügt und mit dem Skript
ausprobiert, jedoch passiert nichts.
Mein Beispiel-Sheet läuft, läuft es bei dir? wenn nicht, ist bei Dir dir Ausführung von Makros im Sicherheitscenter von Excel überhaupt aktiviert ?die Bilder sind jetzt richtig hochgeladen.Ich habe das Makro mal in dem Excel Dokument eingefügt und mit dem Skript
ausprobiert, jedoch passiert nichts.

Zitat von @Ronniedinho2:
gibt es hierbei auch die Möglichkeit benutzerdefinierte Abfragen zu starten? Habe das kopieren und einfügen per Makro hinbekommen. Müsste aber in meiner Tabelle nach Kriterien suchen lassen. Hat jemand einen Tipp für mich?
Neue Frage neuer Thread ...!gibt es hierbei auch die Möglichkeit benutzerdefinierte Abfragen zu starten? Habe das kopieren und einfügen per Makro hinbekommen. Müsste aber in meiner Tabelle nach Kriterien suchen lassen. Hat jemand einen Tipp für mich?
Danke.
Gruß grexit