Microsoft Excel

Herbers Excel/VBA-Archiv

VBA bestimmte Spalten kopieren

Betrifft: VBA bestimmte Spalten kopieren von: Andrea
Geschrieben am: 03.09.2014 09:27:38

Hallo zusammen,

folgendes Problem:

Ich habe eine Tabellenblatt mit einem Export aus einem anderen System. Der Export hat immer die gleichen Spalten und Spaltenüberschriften, nur unterschiedlich viele Zeilen und Inhalte.

Aus diesen "Rohdaten" suche ich nach bestimmten Werten in den Spalten pro Zeile. Wenn 3 meiner Bedingungen zutreffen, dann soll die Zeile in ein neues Tabellenblatt kopiert werden. So soll das ganze Dokument durchsucht werden und entsprechend die matchenden Zeilen kopiert werden. Jedoch soll nicht die gesamte Zeile kopieet werden sondern nur ausgewählte Spalten.

Dazu habe ich folgendes Makro geschrieben:

Sub Makro10()

Dim i As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Raw Data")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Ergebnisliste")

For i = 2 To ws1.Range("B6553").End(xlUp).Row
    If ws1.Cells(i, 7) = "Waggon" And ws1.Cells(i, 2) = "Lech" And ws1.Cells(i, 6) = "Sorte 8"   _
_
Then ws1.Rows(i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)
Next i
End Sub

Hier soll er auf dem Blatt Raw Data in der Spalte 7,2 und 6 nach den Werten Waggon, Lech und Sorte 8 suchen. Diese kopiert er dann auf das Blatt Ergebnisliste. Das Problem ist er kopiert jetzt die ganze Zeile, wie kann ich es machen dss er dann z.B. nur Spalte 1 und Spalte 5 dieser Zeile kopiert?

Die Datei habe ich mal mitangehangen.

Danke für die Hilfe

  

Betrifft: AW: VBA bestimmte Spalten kopieren von: Andrea
Geschrieben am: 03.09.2014 09:30:54

hmm dateiupload ging nicht die datei war ausgegraut und konnte diese nicht hochladne..liegts vielleicht daran, dass ich mit Mac arbeite?


  

Betrifft: AW: VBA bestimmte Spalten kopieren von: yummi
Geschrieben am: 03.09.2014 09:37:09

Hallo Andrea,

Then ws1.Range("G" & i & ",B" & i & ",F" & i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End( _
xlUp).Row + 1)
so in etwa
Gruß
yummi


  

Betrifft: AW: VBA bestimmte Spalten kopieren von: Beverly
Geschrieben am: 03.09.2014 09:39:28

Hi Andrea,

ws1.Range(ws1.Cells(i, 1), ws1.Cells(i, 5)).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: VBA bestimmte Spalten kopieren von: Andrea
Geschrieben am: 04.09.2014 10:28:19

Hi zusammen,

vielen Dank schon mal für die tolle schnelle Hilfe.
@Yummi, den Code habe ich teilweise verstanden. Ich habe diesen jetzt folgendermaßen erweitert:

Then ws1.Range("E" & i & ",C" & i & ",F" & i & ",A" & i & ",H" & i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End( _
xlUp).Row + 1)

Also auf die Spalten E,C,F,A,H. Das komische ist, wenn ich z.B. eine Spalte weglasse sprich das ganzes so habe

Then ws1.Range("E" & i & ",C" & i & ",F" & i & ",A" & i).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End( _
xlUp).Row + 1)

dann kopiert er das komplett anders als mit 4 gewünschten Spalten. Auch dachte ich, dass die Reihenfolge E,C,F,A,H genauso kopiert wird. Aber ich habe gelernt, dass die Reihenfolge bei der Range anscheinend irrelevant ist, weil er im Ergebnis aber nach den Reihen ACEFH kopiert.
Bin gerade erst mich am ausprobieren mit dem Thema Makro schreiben, daher muss ich mich da erst einfummeln, macht aber auf jeden Fall irgendwie Spass. Wenn ich die Kopie nicht in der Zelle A2 haben möchte, sondern B2 was müßte ich da noch ändern?


 

Beiträge aus den Excel-Beispielen zum Thema "VBA bestimmte Spalten kopieren"