2017-05-08 2 views
1

Ich versuche, Spalten aus Blatt 1 zu kopieren und fügen Sie sie in Blatt 2, insbesondere in der nächsten leeren Spalte auf Blatt 2 (so dass ich keine Daten überschreiben). Insgesamt muss ich die Spalten 3-81 kopieren.Kopieren Spalte von einem Blatt zu einem anderen mit VBA (mit Schleife)

Hier ist der Code Ich habe bisher:

Dim col As Integer 

For i = 3 To 81 
Worksheets("Sheet1").Columns(i).Copy Destination:=Sheets("Sheet 2").Column(i). 

Da ich eine Funktion zu jedem eingefügten Spalte vor dem Kopieren und Einfügen der nächsten anwenden, kann ich einfach nicht das Ziel als Spalte (i) bezeichnen, weil es überschreibt einfach die letzte Spalte der berechneten Daten.

Wie kann ich das Ziel ändern, damit ich dieses Problem nicht habe?

Diese Frage wurde schon oft gestellt, aber ich kann meine Lösung nicht finden, da ich der Einzige zu sein scheint, der eine Schleife benutzt und col als i zuweist.

+0

Ich freue mich wirklich darauf, die Person zu sehen, die diese Frage versteht. – Tehscript

+0

[Methoden zum Suchen der zuletzt verwendeten Zeile oder Spalte in einem Arbeitsblatt] (http://stackoverflow.com/documentation/excel-vba/918/methods-for-finding-the-last-used-row-or-column- In-a-Worksheet # t = 201705082041081950548) - Die Tatsache, dass Sie die letzte verwendete Spalte ** innerhalb einer Schleife finden ** hat keinen Einfluss auf die Art und Weise, sie zu finden. – YowE3K

+0

@Tehscript, meet Tim Williams ... – MacroMarc

Antwort

1
Dim i As Long, j As Long 

j = 3 
For i = 3 To 81 
    Worksheets("Sheet1").Columns(i).Copy _ 
      Destination:=Sheets("Sheet 2").Columns(j) 
    j = j + 2 
Next i 
+0

Arbeitete wie Magie. Vielen Dank! –

+0

Ich verstehe nicht, warum der 'j = j + 2' Teil ist. Warum nicht 'j = j + 1'? Oder warum nicht alle Spalten gleichzeitig kopieren und einfügen? – Seb

+0

Mit meinen bestimmten Daten kann ich nicht alle Spalten gleichzeitig übertragen, da ich mit jeder Spalte, die eingefügt wird, eine Funktion anwenden, um eine neue Spalte von Daten direkt von ihm zu erstellen. j = j + 1 würde diese neue Datenspalte, die daneben steht, überschreiben. –

Verwandte Themen