Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen tauschen ganze Spalte

Zellen tauschen ganze Spalte
30.01.2017 09:27:56
BlackStallion
Guten Morgen,
ich habe eine Tabelle mit drei Spalten und muss jetzt in jeder zweiten Zeile die Zellen der Spalte A mit Spalte C tauschen. Und das ab Zeile 3.
So weit war ich schon: :-(
Sub JedeZweiteZeiletauschen()
Dim Zeile As Long
With ActiveWorkSheet
For Zeile = 3 To .UsedRange.Rows.Count
If Zeile Mod 2 = 1 Then
Weiss jemand Rat? Mein gewünschtes Excelbuch ist immer noch nicht genehmigt.
Danke für eure Hilfe

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen tauschen ganze Spalte
30.01.2017 09:54:30
Anton
Guten Morgen BlackStallion,
meinst Du so?
Sub ZellenTauschen()
Dim rngZeile As Range
Dim wertSpalteA As String
Dim rngBereich As Range
Dim wksBlatt As Worksheet
Set wksBlatt = ThisWorkbook.Worksheets("Tabelle1") 'Tabellenblatt ändern
With wksBlatt
For Each rngZeile In .Range("A3:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
If rngZeile.Row Mod 2 = 0 Then
wertSpalteA = rngZeile.Value
rngZeile.Value = rngZeile.Offset(0, 2).Value
rngZeile.Offset(0, 2).Value = wertSpalteA
End If
Next rngZeile
End With
End Sub
VG Anton
AW: Zellen tauschen ganze Spalte
30.01.2017 11:45:00
BlackStallion
Hallo Anton!
Danke für die Hilfe, klappt schon sehr gut.
Wie lautet die Zeile, wenn die Schriftart/Formatierung mit übernommen werden soll? Die eine Spalte beinhaltet Barcodes und das Makro übernimmt die dafür nötige 3 to 9 Barcode Schriftart nicht.
Danke sehr!
Grüße
Anzeige
AW: Zellen tauschen ganze Spalte
30.01.2017 13:28:13
Daniel
Hi
wenn du Formate mit tauschen willst, dann müsstest du mit .Copy Destination arbeiten, weil hierbei Inhalte und Formate kopiert werden.
Du musst aber die Inhalte einer Spalte zwischenspeichern.
die Schleife kannst du auch einfacher gestalten, da du mit STEP angeben kannst, dass nur jede zweite Zeile verwendet werden soll:
For Zeile = 3 to .Usedrange.rows.count Step 2
.Cells(Zeile, 1).Copy .Cells(Zeile, 5)
.Cells(Zeile, 3).Copy .Cells(Zeile, 1)
.Cells(Zeile, 5).Copy .Cells(Zeile, 3)
Next
.columns(5).Clear

bei großen Datenmengen könnte es schneller sein, wenn du nicht jede Zeile einzeln kopierst, sondern erstmal:
die Tabelle so sortierst, das alle Zeilen, die getauscht werden müssen direkt untereinander stehen.
dann den Tausch für den ganzen Zellblock in einem Schritt ausführst
jetzt die Zeilen wieder in die Ursprüngliche Reihenfolge zurücksortierst
die Ursprüngliche Reihenfolge sichert man sich in einer Hilfsspalte per formel: =Zeile() und ersetzt dann in dieser Hilfsspalte die Formeln durch Werte.
Ebenso kennzeichnet man jede zweite Zeile per Hilfsspalte, so dass man über Sortieren den Block bilden kann.
das sieht als Gesamtcode dann so aus:

Sub tausch()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1).Resize(, 2)
.Columns(1).FormulaR1C1 = "=Row()"
.Columns(2).FormulaR1C1 = "=If(Mod(Row(),2)=1,""x"",1)"
.Formula = .Value
.EntireRow.Sort key1:=.Cells(1, 2), order1:=xlAscending, Header:=xlYes
With .Offset(1, 0).SpecialCells(xlCellTypeConstants, 2)
.Offset(0, 1 - .Column).Copy .Offset(0, 1)
.Offset(0, 3 - .Column).Copy .Offset(0, 1 - .Column)
.Offset(0, 1).Copy .Offset(0, 3 - .Column)
.Offset(0, 1).Clear
End With
.EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlYes
.ClearContents
End With
End With
End Sub

wie gesagt, der Code ist etwas aufwendiger, dürfte bei größeren Datenmengen aber deutlich schneller sein.
Gruß Daniel
Anzeige
AW: Zellen tauschen ganze Spalte
30.01.2017 13:54:39
BlackStallion
Hallo Daniel,
ich bin blutiger Anfänger und warte immer noch darauf, dass mir endlich das Grundlagenbuch bestellt wird.
Dein zweiter Vorschlag funktioniert perfekt. Wärst Du so nett, mir die Erklärungen dazuzuschreiben, damit ich weiss wo ich eine Ziffer ändern muss, wenn meine Tabelle eine andere Anzahl Spalten hat?
Vielen Dank!
AW: Zellen tauschen ganze Spalte
30.01.2017 14:02:55
Daniel
Hi
der Code verwendet für die Hilfsspalten automatisch die erste freie Spalte am Tabellenende, egal wo die liegt, dh du musst da nichts anpassen, wenn die Tabelle mehr Spalten hat.
die Spalten, die getauscht werden, stehen als Spaltennummern in:
.Offset(0, 1 - .Column) Spalte A
.Offset(0, 3 - .Column) Spalte C
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige