Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalte mehrfach untereinander kopieren

Spalte mehrfach untereinander kopieren
09.10.2015 12:06:46
Edgard
Hallo habe ein kleines Verständnisproblem mit der for-Schleife bei VBA.
Ich möchte aus einer Tabelle eine bestimmte Spalte 3x untereinander in ein anderes Tabellenblatt einfügen, um sie nachher in einer Pivot nutzen zu könenn. Dabei will ich Änderungen laufend übernommen haben. ( Sonst könnte ich das ganze auch manuell machen, soll aber automatisch gehen).
Hier der Code:

Sub kopieren()
Dim wks1 As Worksheet, wks2 As Worksheet
Dim lastCell As Long
Dim i As Long
Set wks1 = Worksheets("Tabelle3")
Set wks2 = Worksheets("Priority List")
With wks2
For i = 1 To 3
lastCell = .Range("B65536").End(xlUp).Row
.Range(.Cells(3, 2), .Cells(lastCell, 2)).Copy _
Destination:=wks1.Range("A2").End(xlUp).Offset(i, 0)
Next i
End With
Set wks1 = Nothing
Set wks2 = Nothing
End Sub

Bin VBA-Anfänger, weshalb der Code auch aus verschiedenen Recherchen hier zusammenkopiert ist. Die Liste wird mir momentan genau 1x kopiert und Änderungen auch aktualisiert, wie gewünscht. Lediglich mit der for-Schleife komme ich nicht weiter.

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte mehrfach untereinander kopieren
09.10.2015 12:20:44
Daniel
Hi
überleg mal, Range("A2").End(xlUp) führt immer zur Zelle A1!
wenn du einen Zellbereich 3x hintereinander kopieren willst, dann kann man das in Excel so machen, dass man als Einfügebereich nicht die obere linke Zelle angibt, sondern den ganzen, entsprechend vergrössterten Einfügebereich, dann weiss Excel, das es die kopierten Zellen wiederholt eintragen soll:

Sub kopieren()
Dim wks1 As Worksheet, wks2 As Worksheet
Dim lastCell As Long
Set wks1 = Worksheets("Tabelle3")
Set wks2 = Worksheets("Priority List")
With wks2
lastCell = .Range("B65536").End(xlUp).Row
With .Range(.Cells(3, 2), .Cells(lastCell, 2))
.Copy Destination:=wks1.Range("A2").Resize(.Rows.count * 3, .columns.count)
end with
End With
Set wks1 = Nothing
Set wks2 = Nothing
End Sub
Gruß Daniel

Anzeige
AW: Spalte mehrfach untereinander kopieren
09.10.2015 12:46:38
Edgard
Vielen, vielen Dank!
Macht genau was ich will. Wenn ich eine Zeile hinzufüge in der Quelldatei, fügt er sie am Ziel 3x ein. Die Liste bleibt aktuell. Leider funktioniert es nicht einwandfrei, wenn ich die letzte angefügte Zeile wieder entferne. Die ersten beiden Male funktioniert es, beim 3. Mal, also am Ende, bleibt der Eintrag jedoch bestehen. Ich weiß nicht, inwiefern, dass für den Anwendungsfall hier relevant werden wird. Wäre aber sauberer, wenn die Zieltabelle, wirklich immer genau 3x den Inhalt der Quelltabelle hat und nicht mehr. Ich vermute mal, dass sobald die letzte Zeile in der Quelltabelle gelöscht wird, er zwar arbeitet, aber die allerletzte Zeile in der Zieltabelle nicht geändert wird, da sie nicht mehr in der Range liegt und daher unberührt bleibt. Liega ich da richtig? kann man das ohne weiteres beheben? Wenn nicht ist erstmal nicht so wild. Das Kernproblem ist ja erstmal gelößt :) DANKE !!!

Anzeige
AW: Spalte mehrfach untereinander kopieren
09.10.2015 12:50:45
Daniel
Hi
einfach vor dem Kopieren in der Zieldatei den bestehenden Inhalt löschen.
Gruß Daniel

AW: Spalte mehrfach untereinander kopieren
09.10.2015 12:57:21
Edgard
ok, gut, das geht natürlich^^ Kann ich auch so in den befehl schreiben. Mal gucken, ob alles reibungslos läuft mit der pivot dann.

AW: Spalte mehrfach untereinander kopieren
09.10.2015 13:58:53
Edgard
so anscheinend bin ich die ganze sache wohl doch falsch angegangen, daher nochmal eine beschreibung was ich eigentlich will:
ich will eine Tabelle neu aufziehen aus einer anderen, damit die Pivot-Tabelle anders arbeitet.
Ich habe die Spalten A B C D E F G H I
die Spalten BCD beinhalten verschiedene Produkte die kategorisiert sind und EFG die jeweiligen Preise
Jetzt können beispielsweise Produkte sowohl in der Kategorie C als auch D sein. Mir ist für die Pivot Tabelle aber egal in welcher Kategorie die Produkte sind , ich will lediglich die Preise vergleichen.
Daher wollte ich die Tabelle jetzt neu strukturieren und zwar so:
A B E H I
A C F H I
A D G H I
Für die Spalte mit A,H, und I habe ich ja jetzt zumindest einen Ansatz.
Jetzt möchte ich 1. die Spalten BCDEFG so anordnen wie oben angezeigt und 2. , wenn ich in der Originaltabelle in A zb eine Zeile hinzufüge, in der Zieltabelle auch für alle anderen eine Leerzeile entsteht. Habe ich etwas wesentliches in Pivot übersehen? Weil ich finde meinen Ansatz hier sehr, sehr kompliziert, nur habe ich leier keine andere Idee.
In Pivot war ich bisher soweit gekommen:
. B C D
A E F G
A E F G
A E F G also so sah die erzeugte Tabelle aus. A die Zeilen und BCD die Spalten. Jetzt bestehen zwischen B, C und D ja UND-Verknüpfungen, die will ich aber gar nicht. Hoffe man kann so ungefähr mein Dilemma verstehen und was ich eigentlich will.

Anzeige
AW: Spalte mehrfach untereinander kopieren
13.10.2015 01:15:29
Daniel
Hi
ok, das sind jetzt ganz neue Aspekte in der Aufgabenstellung.
probier mal folgenden Code:
Sub test()
Dim wks1 As Worksheet, wks2 As Worksheet
Dim i As Long
Dim Anzahl As Long
Set wks1 = sheets("Tabelle2")
Set wks2 = sheets("Priority List")
Anzahl = wks1.Cells(Rows.Count, 1).End(xlUp).Row - 1
wks1.Cells(2, 1).Resize(Anzahl).Copy wks2.Cells(2, 1).Resize(Anzahl * 3)
wks1.Cells(2, 8).Resize(Anzahl, 2).Copy wks2.Cells(2, 4).Resize(Anzahl * 3, 2)
For i = 0 To 2
wks1.Cells(2, 2 + i).Resize(Anzahl, 1).Copy wks2.Cells(2, 2).Offset(Anzahl * i)
wks1.Cells(2, 5 + i).Resize(Anzahl, 1).Copy wks2.Cells(2, 3).Offset(Anzahl * i)
Next
End Sub

Gruss Daniel

Anzeige
AW: Spalte mehrfach untereinander kopieren
12.10.2015 08:39:17
Edgard
Kann mir keener helfen, sei es nur n Anstoß ?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalte mehrfach untereinander kopieren in Excel


Schritt-für-Schritt-Anleitung

Um in Excel eine bestimmte Spalte mehrfach untereinander in ein anderes Tabellenblatt zu kopieren, kannst du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub kopieren()
       Dim wks1 As Worksheet, wks2 As Worksheet
       Dim lastCell As Long
       Set wks1 = Worksheets("Tabelle3") ' Quellarbeitsblatt
       Set wks2 = Worksheets("Priority List") ' Zielarbeitsblatt
    
       With wks2
           lastCell = .Range("B65536").End(xlUp).Row
           With .Range(.Cells(3, 2), .Cells(lastCell, 2))
               .Copy Destination:=wks1.Range("A2").Resize(.Rows.Count * 3, .Columns.Count)
           End With
       End With
       Set wks1 = Nothing
       Set wks2 = Nothing
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Dieser Code kopiert die Daten aus der Quelle 3 Mal in das Zielblatt.


Häufige Fehler und Lösungen

  • Problem: Die kopierten Zellen werden nicht dreimal eingefügt.

    • Lösung: Stelle sicher, dass der Zielbereich korrekt definiert ist, wie im obigen Code gezeigt.
  • Problem: Änderungen in der Quelldatei werden nicht korrekt in der Zieldatei aktualisiert.

    • Lösung: Füge vor dem Kopieren den bestehenden Inhalt im Zielbereich zu löschen, um sicherzustellen, dass die Daten immer aktuell sind:
    wks1.Range("A2:A" & lastCell).ClearContents

Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch die Excel-Funktionen nutzen:

  1. Manuelles Kopieren: Markiere die Zellen, drücke STRG + C, gehe zur Zielzelle, drücke STRG + V, und wiederhole diesen Vorgang.
  2. Füllhandle: Ziehe mit dem Füllgriff (kleines Quadrat in der unteren rechten Ecke der Auswahl) nach unten, um die Werte zu duplizieren.

Praktische Beispiele

Angenommen, du hast eine Liste von Produkten in Tabelle3 mit den Spalten A, B, und C. Um diese in Priority List dreimal zu kopieren, nutze den oben angegebenen VBA-Code.

Wenn du die Preise in einer Pivot-Tabelle vergleichen möchtest, stelle sicher, dass die Zieldaten immer in der gewünschten Struktur vorliegen.


Tipps für Profis

  • Dynamische Bereichsnamen: Nutze dynamische Bereichsnamen, um deine Quell- und Zielbereiche automatisch zu aktualisieren.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deinem VBA-Code, um unerwartete Probleme zu erkennen und zu lösen.
  • Automatisierung: Du kannst das Makro so einstellen, dass es bei bestimmten Ereignissen wie dem Öffnen der Datei oder dem Ändern von Zellen automatisch ausgelöst wird.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Daten immer aktuell sind? Um sicherzustellen, dass die Daten immer aktuell sind, kannst du vor dem Kopieren den bestehenden Inhalt in der Zieldatei löschen.

2. Ist es möglich, mehrere Spalten gleichzeitig zu kopieren? Ja, du kannst den VBA-Code anpassen, um mehrere Spalten gleichzeitig zu kopieren, indem du die entsprechenden Zellbereiche im Code erweiterst.

3. Welche Excel-Version wird benötigt? Der bereitgestellte VBA-Code sollte in Excel 2010 und neueren Versionen problemlos funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige