Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1320to1324
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

3 Spalten in eine Zeile transponieren

3 Spalten in eine Zeile transponieren
15.07.2013 14:15:39
Hannes
Hallo liebe Forumsgemeinde,
ich wende mich an euch in der Hoffnung, dass ihr mir bei der Lösung eines Problems helfen könnt, das ich zunächst für einfach zu lösen hielt.
Es geht um folgendes:
Ich habe eine Datei, in der die Daten folgendermaßen aufgelistet sind.
Postleitzahl Ort Straße
Zeile 1: PLZ1 | Ort1 |Straße1
Zeile 2: PLZ2 | Ort2 |Straße2
Zeile 3: PLZ3 | Ort3 |Straße3
Zeile 4: PLZ4 | Ort4 |Straße4
...
Nun möchte ich die Daten gerne in eine Zeile transponieren.
Am Ende soll das Ganze dann so aussehen:
Zeile 1: PLZ1|ORT1|Straße1|PLZ2|Ort2|Straße2|PLZ3|Ort3|Straße3|PLZ4|Ort4|Straße4
Ich komme einfach nicht dahinter und wäre euch für eure Unterstützung sehr dankbar!!

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA und Formellösung
15.07.2013 14:27:52
Klaus
Hi,
ich hab zwei Lösungen für dich, einmal per VBA und einmal per Formel:

Die Datei https://www.herber.de/bbs/user/86375.xlsm wurde aus Datenschutzgründen gelöscht


Grüße,
Klaus M.vdT.

AW: VBA und Formellösung
15.07.2013 14:48:17
Hannes
Super vielen Dank Klaus, das is ja genial!!!
Wenn ich dich nun nochmal fragen dürfte, gibt es da ne Möglichkeit, nach einer bestimmten Anzahl von Orten eine neue Zeile zu starten?
also quasi:
Zeile1: PLZ1|ORT1|Straße1|PLZ2|Ort2|Straße2|PLZ3|Ort3|Straße3|PLZ4|Ort4|Straße4
Zeile2: PLZ5|ORT5|Straße5|PLZ6|Ort6|Straße6|PLZ7|Ort7|Straße7|PLZ8|Ort8|Straße8
Sorry, dass ich das bei der Ausgangsfrage nicht erwähnt habe, das ist aber nur nen Zusatz, ich könnte die Daten auch sonst Schrittweise herausziehen.
Aber wirklich schonmal tausend Dank!

Anzeige
AW: VBA und Formellösung
15.07.2013 14:57:21
Klaus
Hallo Hannes,
klar geht das, aber was ist eine "bestimmte" Anzahl? 4, wie im Beispiel? Oder immer anders? Per VBA oder per Formel?
In der Formellösung konntest du den Teil SPALTE() aus der A1-Formel ändern in SPALTE(A1).
In A2 kommt die Formel dann mit SPALTE(M1). Beide Formeln nach rechts kopieren, da ist dein Zeilenumbruch. Kannst du beliebig fortsetzen, musst halt nur die Spalten-Zahl hochzählen und in der ersten Formel ändern.
In der VBA-Lösung müsstest du bei
Sheets("Output").Cells(1, lCol).PasteSpecial
statt 1 halt eine Zeilenvariable setzen, und die alle x-durchläufe von i um einen erhöhen (und die lCol-Variable wieder zurück setzen).
Sorry, dass ich das bei der Ausgangsfrage nicht erwähnt habe
Allerdings, denn dann hätte ich von Anfang an einen variablen Ansatz gewählt. Jetzt habe ich keine Lust mehr, und du musst dir die Änderungen selber erbasteln!
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA und Formellösung
15.07.2013 15:01:43
Hannes
Hey Klaus,
danke für die erneute Hilfestellung.
Das sollte ich hinkriegen
Vielen Dank nochmal und noch einen schönen Tag !

Tabelle 12-zeilig transponieren
15.07.2013 16:26:28
NoNet
Hallo Hannes,
Gib in Klaus' Beispielmappe im Blatt "Formel" ain Zelle A1 folgende Funktion ein und kopiere sie bis Spalte L und dann soweit wie benötigt nach unten :
=INDEX(Input!$A:$C;4*(ZEILE()-1)+1+GANZZAHL((SPALTE()-1)/3);1+REST(SPALTE()-1;3))
Gruß, NoNet
Hast Du Interesse, andere Excel-Begeisterte kennenzulernen ? - Dann komme zum
Exceltreffen 11.-13.10.2013 in Duisburg

http://www.exceltreffen.de/index.php?page=230
Es sind noch genügend Plätze für Interessenten frei - schau doch mal rein !

Anzeige
AW: Tabelle 12-zeilig transponieren
16.07.2013 12:42:29
Hannes
Hey NoNet,
dir auch noch einmal vielen Dank für die schnelle Hilfestellung! Die Arbeit mit dem Datensatz hat sich dadurch für mich extrem vereinfacht. Ich hätte nun abschließender Weise nochmal eine zusätzliche Frage, nachdem ihr mir in so guter Weise das Potential von Excel aufgezegit habt.
Wie ich den Zeilenumbruch beliebig setzten kann habe ich nun verstanden und wende es sehr effektiv an, es ist nun aber der Fall, dass ich den Umbruch oftmals nach einer unterschiedlichen Anzahl von Orten brauche. Ich habe daher den Orten eine Art Auftragsnummer zugeordnet, die nun in der 3. Spalte aufgeführt wird:
PLZ1 | ORT 1| NR 1|
PLZ2 | ORT 2| NR 1|
PLZ3 | ORT 3| NR 1|
PLZ4 | ORT 4| NR 2|
PLZ5 | ORT 5| NR 2|
PLZ6 | ORT 6| NR 3|
...
Ich wollte euch nun abschlißend fragen, ob es mit Hilfe einer Wenn Dann Regel die Möglichkeit gibt, dass Excel sobald sich die Nummer in der dritten Spalte ändert, automatisch eine Zeile beginnt. Also das fertige Ergebnis so aussehen würde:
PLZ1 | ORT 1| NR 1|PLZ2 | ORT 2| NR 1|PLZ3 | ORT 3| NR 1|
PLZ4 | ORT 4| NR 2|PLZ5 | ORT 5| NR 2|
PLZ6 | ORT 6| NR 3|...
Freundliche Grüße
Hannes

Anzeige
AW: Tabelle 12-zeilig transponieren
16.07.2013 13:49:51
Hannes
Hey NoNet,
dir auch noch einmal vielen Dank für die schnelle Hilfestellung! Die Arbeit mit dem Datensatz hat sich dadurch für mich extrem vereinfacht. Ich hätte nun abschließender Weise nochmal eine zusätzliche Frage, nachdem ihr mir in so guter Weise das Potential von Excel aufgezegit habt.
Wie ich den Zeilenumbruch beliebig setzten kann habe ich nun verstanden und wende es sehr effektiv an, es ist nun aber der Fall, dass ich den Umbruch oftmals nach einer unterschiedlichen Anzahl von Orten brauche. Ich habe daher den Orten eine Art Auftragsnummer zugeordnet, die nun in der 3. Spalte aufgeführt wird:
PLZ1 | ORT 1| NR 1|
PLZ2 | ORT 2| NR 1|
PLZ3 | ORT 3| NR 1|
PLZ4 | ORT 4| NR 2|
PLZ5 | ORT 5| NR 2|
PLZ6 | ORT 6| NR 3|
...
Ich wollte euch nun abschlißend fragen, ob es mit Hilfe einer Wenn Dann Regel die Möglichkeit gibt, dass Excel sobald sich die Nummer in der dritten Spalte ändert, automatisch eine Zeile beginnt. Also das fertige Ergebnis so aussehen würde:
PLZ1 | ORT 1| NR 1|PLZ2 | ORT 2| NR 1|PLZ3 | ORT 3| NR 1|
PLZ4 | ORT 4| NR 2|PLZ5 | ORT 5| NR 2|
PLZ6 | ORT 6| NR 3|...
Freundliche Grüße
Hannes

Anzeige
mit einer Formel würde das ...
16.07.2013 14:09:37
Klaus
... warscheinlich nur sehr schwierig gehen, Hannes. Die vorgestellten Formeln beruhen ja alle auf der MOD/Zeile/Spalte-Logik, die deine neue Forderung komplett zunichte macht.
Ich setzt mich mal dran, das VBA zu überarbeiten und lad in ein paar Minuten die Tabelle dazu hoch. Allerdings möchte ich dich darauf hinweisen:
Bitte beim ERSTEN Mal gleich die komplette, korrekte Frage stellen! Deine Änderung braucht einen völlig neuen Ansatz, damit hast du Helfer-Zeit für die bisherigen Lösungen einfach nur verplempert. Das ist unfair - und zwar nicht den Helfern gegenüber (die das freiwillig machen), sondern den anderen Fragestellern gegenüber!
Grüße und bis gleich,
Klaus M.vdT.

Anzeige
AW: VBA-Lösung
16.07.2013 14:22:59
Hannes
Hallo Klaus,
nochmal ein großes Dankeschön, die Lösung funktioniert echt super! Entschuldige bitte, dass ich die Frage nicht sofort konkretisierter gestellt habe. Ich werde das in Zukunft berücksichtigen.
Beste Grüße und ein riesen Danke
Hannes

Transponieren : Noch eine VBA-Lösung
16.07.2013 15:08:10
NoNet
Hallo Hannes,
nur zur Ergänzung : Noch eine kleine VBA-Lösung :
Sub ZeilenKopieren()
'Indikator (Nr.) muss in der letzten Spalte der Quelle-Liste stehen !
Dim rngQuelle As Range, wsQuelle As Worksheet
Dim rngZiel As Range, wsZiel As Worksheet
Dim lngQZ As Long, lngQS As Long, lngA As Long
Dim lngZZ As Long, lngZS As Long
Set wsQuelle = Worksheets("Input")      'Quelldaten auf Blatt "Input"
Set wsZiel = Worksheets("Output")       'zieldaten nach Blatt "Output"
Set rngQuelle = wsQuelle.Range("A1")    'Die Startadresse auf Quell-Blatt
Set rngZiel = wsZiel.Range("A1")        'Die Zieladresse auf dem Ziel-Blatt
lngQS = rngQuelle.Column                'Erste Spalte der Quelle ermitteln
lngZZ = rngZiel.Row                     'Erste Zielzeile ermitteln
lngA = rngQuelle.End(xlToRight).Column - rngQuelle.Column + 1 'Anzahl der Spalten
For lngQZ = rngQuelle.Row To rngQuelle.End(xlDown).Row
If lngQZ = rngQuelle.Row Then 'erste Zeile kopieren
rngQuelle.Resize(, lngA).Copy rngZiel
Else
If wsQuelle.Cells(lngQZ, lngQS + lngA - 1) = _
wsQuelle.Cells(lngQZ - 1, lngQS + lngA - 1) Then
lngZS = lngZS + lngA
Else
lngZZ = lngZZ + 1
lngZS = rngZiel.Column
End If
wsQuelle.Cells(lngQZ, lngQS).Resize(, lngA).Copy wsZiel.Cells(lngZZ, lngZS)
End If
Next
Application.CutCopyMode = False
End Sub
Gruß, NoNet
Hast Du Interesse, andere Excel-Begeisterte kennenzulernen ? - Dann komme zum
Exceltreffen 11.-13.10.2013 in Duisburg

http://www.exceltreffen.de/index.php?page=230
Es sind noch genügend Plätze für Interessenten frei - schau doch mal rein !

Anzeige
Danke für die Rückmeldung! owT.
16.07.2013 17:03:14
Klaus
.

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige