Spalte mehrfach untereinander kopieren

Bild

Betrifft: Spalte mehrfach untereinander kopieren
von: Edgard Merker
Geschrieben am: 09.10.2015 12:06:46

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.

Bild

Betrifft: AW: Spalte mehrfach untereinander kopieren
von: Daniel
Geschrieben am: 09.10.2015 12:20:44
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

Bild

Betrifft: AW: Spalte mehrfach untereinander kopieren
von: Edgard Merker
Geschrieben am: 09.10.2015 12:46:38
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 !!!

Bild

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

Bild

Betrifft: AW: Spalte mehrfach untereinander kopieren
von: Edgard Merker
Geschrieben am: 09.10.2015 12:57:21
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.

Bild

Betrifft: AW: Spalte mehrfach untereinander kopieren
von: Edgard Merker
Geschrieben am: 09.10.2015 13:58:53
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.


Bild

Betrifft: AW: Spalte mehrfach untereinander kopieren
von: Daniel
Geschrieben am: 13.10.2015 01:15:29
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

Bild

Betrifft: AW: Spalte mehrfach untereinander kopieren
von: Edgard Merker
Geschrieben am: 12.10.2015 08:39:17
Kann mir keener helfen, sei es nur n Anstoß ?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Spalte mehrfach untereinander kopieren"