Excel Alle geraden und ungeraden Spalten jeweils tauschen

Ich habe eine Exceldatei mit ca. 200 Spalten (die jeweils ca.100 Zeilen haben). Sie sollen jeweils getauscht werden.
Am Anfang seien die Spalten wie üblich A,B,C,D,E,F,… daraus soll B,A,D,C,G,F,… werden.

Habe lange gegoogelt, es gibt viele Tipps für den manuellen Tausch von wenigen Spalten, das geht bei 200 Spalten aber nicht. Habe ein Programm namens Kutools runtergeladen mit dem man jede zweite Spalte markieren und kopieren kann, beim Einfügen wird aber nicht jede zweite Spalte übersprungen, sondern alles Spalte an Spalte eingefügt.

Ein Work Around mit regulären Ausdrücken, Notepad++ oder auch ein Online Converter wären auch ok, aber ich habe keine Ideen mehr.

Eine Lösung aus dem „Baukasten“: In einer neuen Tabelle in jeder Zeile die Formel

=INDIREKT(„Tabelle1!“ & ADRESSE(ZEILE();WENN(ISTGERADE(SPALTE());SPALTE()-1;SPALTE()+1)))

eintragen. Die Funktion erstellt eine Kopie von Tabelle1 mit vertauschten Spalten.
Leere Zellen stellt die Funktion allerdings als 0 dar. Wenn dich das stört, müsste man den Fall noch abfangen.

hi,

naja. Erstelle ein neues Blatt, schreib in a1=altetabelle.b1 und in b1=altetabelle.a1 oder wie auch immer das in Excel heißt.

Dann nach recht´s füllen. danach nach unten füllen
Sollte es nicht gehen, in Open Office geht es. er übernimmt ba zu badc usw.

grüße
lipi

Danke! Da muss ich dann doch ein deutsches Excel auftreiben, benutze immer ein Englisches. Krieg ich aber hin! Meine Fage ist, wie kriege ich das automatisch hin, in „jeder Zeile“ das einzufügen, es sind über 100 Zeilen nach unten.

Eine Null rausfiltern wäre natürlich kein Problem.

Hallo,

sinnvollerweise würde ich dieses Problem mittels VBA angehen.

Man kann in einer Schleife jeweils 2 Spalten in ein Arrray oder eine Collection einlesen und dann vertauscht wieder raus schreiben. Je nach dem wie man die Schleife aufbaut, ist es dann unerheblich ob ich 10 oder 500 Spalten tausche bzw. 100 oder 10,000 Zeilen kopiere.

Wenn ich als Ergebnis ein neue EXCEL Datei erzeugen will, kann man das EXCEL Blatt als ADODB recordset öffnen und mittels einem Range.CopyFromRecordset in das neue Datenblatt übernehmen.

Tschau
Peter

Die Funktionen sind in der Englischen Version auch vorhanden und die Syntax ist die selbe, sie heißen nur anders.
Wenn du INDIREKT() 2000 mal ausführst, dürfte das Dokument allerdings sehr langsam werden.

Die Lösung ist viel besser. Sie liefert das selbe Ergebnis und du vermeidest INDIREKT()