Herbers Excel-Forum - das Archiv

Liste umsortieren

Bild

Betrifft: Liste umsortieren
von: Gert

Geschrieben am: 03.01.2007 11:01:51
Hallo Leute,
ich habe ein Problem und komme einfach nicht auf eine Lösung. Ich habe eine lange Excel-Liste, deren 2 Spalten sich regelmäßig in folgendem Stil wiederholen:
Name, Text1
Adresse, Text2
Telefon, Text3
Name, Text4
Adresse, Text5
Telefon, Text6
usw.
Zur Weiterverarbeitung bräuchte ich aber:
Name, Text1, Text4,...
Adresse, Text2, Text5,...
Telefon, Text3, Text 6,...
Kann mir jemand bitte einen Tipp geben, wie ich diese Liste umformatieren kann?
Vielen Dank
Gert
Bild

Betrifft: AW: Liste umsortieren
von: Erich G.

Geschrieben am: 03.01.2007 12:32:46
Hallo Gert,
wie ist das zu verstehen?
In Tabellenform:
 ABC
1NameText1 
2AdresseText2 
3TelefonText3 
4NameText4 
5AdresseText5 
6TelefonText6 
7   
8   
9   
10NameText1Text4
11AdresseText2Text5
12TelefonText3Text6
13   
14   
15   
16NameAdresseTelefon
17Text1Text2Text3
18Text4Text5Text6

Sollen die Zeilen 1 bis 6 umgeformt werden in die Zeilen 10-12 oder in die Zeilen 16-18?
Sind Text1 und Text4 konkrete Namen?
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht allen einen guten Start ins neue Jahr!
Bild

Betrifft: AW: Liste umsortieren
von: Gert

Geschrieben am: 03.01.2007 13:17:44
Hallo Erich,
danke, dass du dich meinem Problem annimmst. Ideal wäre es so wie in der Zeile 16-18 dargestellt. Ich würde es gerne einmalig "per Hand" umstellen (also wenn es geht nicht unbedingt mit Macro usw.)
Danke und ebenfalls ein gutes Neues Jahr aus Österreich
Gert
PS: Was ich als Text1, Text2,... dargestellt habe, sind konkrete Namen, Adressen und Telefonnummern.
Bild

Betrifft: AW: Liste umsortieren
von: Erich G.

Geschrieben am: 03.01.2007 14:59:16
Hallo Gert,
wenn die Struktur so regelmäßig ist, ginge das so:
 ABCDEF
1NameText1 NameAdresseTelefon
2AdresseText2 Text1Text2Text3
3TelefonText3 Text4Text5Text6
4NameText4 Text7Text8Text9
5AdresseText5 Text10Text11Text12
6TelefonText6 Text13Text14Text15
7NameText7 000
8AdresseText8    
9TelefonText9    
10NameText10    
11AdresseText11    
12TelefonText12    
13NameText13    
14AdresseText14    
15TelefonText15    

Formeln der Tabelle
ZelleFormel
D1=A1
E1=A2
F1=A3
D2=INDIREKT("B"&3*ZEILE()-5)
E2=INDIREKT("B"&3*ZEILE()-4)
F2=INDIREKT("B"&3*ZEILE()-3)
D3=INDIREKT("B"&3*ZEILE()-5)
E3=INDIREKT("B"&3*ZEILE()-4)
F3=INDIREKT("B"&3*ZEILE()-3)

Du kannst die Formeln von D2, E2, F2 nach unten kopieren.
Hinterher kannst du ja die Formeln durch Werte ersetzen (ganzen Bereich markieren, kopieren,
mit "Bearbeiten - Inhalte einfügen - Werte" wieder einfügen.
Danach kannst du die Spalte A bis C löschen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: Liste umsortieren
von: Gert

Geschrieben am: 03.01.2007 17:57:23
Lieber Erich aus Kamp-Lintfort,
also jetzt habe ich aber was dazugelernt! Die Funktion INDIREKT habe ich noch nicht gekannt und diese Art der Anwendung...muss schon sagen, genial!
Danke für die Hilfe, mein Problem ist damit gelöst.
lg
Gert
PS: Deine Art der Hilfestellung ist ausgesprochen gut zu lesen!
Bild

Betrifft: Danke für deine Rückmeldung - und noch ...
von: Erich G.

Geschrieben am: 03.01.2007 20:04:37
Hallo Gert,
freut mich, dass es funzt!
... ein Tipp:
http://www.excel-jeanie-html.de/
Damit lassen sich auch Daten zu Fragen gut darstellen.
Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: Liste umsortieren
von: fcs

Geschrieben am: 03.01.2007 13:03:39
Hallo Gert,
bei einer sehr langen Liste (mehr als 255 Namen) gibt es ein Problem mit der maximalen Spaltenzahl.
Hier mal zwei Makros, mit denen man die Daten umgruppieren kann. Entweder in 3 Spalten oder in 3 Zeilen.
Sub DatenUmgruppieren2()
'Gruppiert Adressen in 3 Spalten um
Dim wks1 As Worksheet, wks2 As Worksheet, text As Variant
Dim Zeile1 As Long, Zeile2 As Long, I As Integer, J As Long
Set wks1 = ActiveWorkbook.Sheets("Tabelle1") 'Quelltabelle
Set wks2 = ActiveWorkbook.Sheets("Tabelle2") 'Zieltabelle
Zeile2 = 1
With wks2
.Cells.ClearContents 'Daten in Zieltabelle löschen
'Spaltentitel eintragen
.Cells(Zeile2, 1) = wks1.Cells(1, "A").Value
.Cells(Zeile2, 2) = wks1.Cells(2, "A").Value
.Cells(Zeile2, 3) = wks1.Cells(3, "A").Value
'Daten übertragen aus Spalte B
For J = 1 To wks1.Cells(wks1.Rows.Count, 1).End(xlUp).Row
Zeile2 = Zeile2 + 1
For I = 1 To 3
Zeile1 = Zeile1 + 1
.Cells(Zeile2, I).Value = wks1.Cells(Zeile1, "B").Value
Next
Next
End With
End Sub
Sub DatenUmgruppieren1()
'Gruppiert Adressen in 3 Zeilen um
Dim wks1 As Worksheet, wks2 As Worksheet, text As Variant
Dim Zeile1 As Long, Spalte2 As Long, I As Integer, Zeile2 As Long, J As Long
Set wks1 = ActiveWorkbook.Sheets("Tabelle1") 'Quelltabelle
Set wks2 = ActiveWorkbook.Sheets("Tabelle2") 'Zieltabelle
Spalte2 = 1
Zeile2 = 0
With wks2
.Cells.ClearContents 'Daten in Zieltabelle löschen
'Zeielntitel eintragen
.Cells(1, Spalte2) = wks1.Cells(1, "A").Value
.Cells(2, Spalte2) = wks1.Cells(2, "A").Value
.Cells(3, Spalte2) = wks1.Cells(3, "A").Value
'Daten übertragen aus Spalte B
For J = 1 To wks1.Cells(wks1.Rows.Count, 1).End(xlUp).Row
If Spalte2 = wks2.Columns.Count Then
MsgBox "Alle Spalten der Tabelle sind ausgefüllt. 4 Zeilen unterhalb geht es weiter"
Spalte2 = 1
Zeile2 = Zeile2 + 4
.Cells(Zeile2 + 1, Spalte2) = wks1.Cells(1, "A").Value
.Cells(Zeile2 + 2, Spalte2) = wks1.Cells(2, "A").Value
.Cells(Zeile2 + 3, Spalte2) = wks1.Cells(3, "A").Value
End If
Spalte2 = Spalte2 + 1
For I = 1 To 3
Zeile1 = Zeile1 + 1
.Cells(Zeile2 + I, Spalte2).Value = wks1.Cells(Zeile1, "B").Value
Next
Next
End With
End Sub

Die Namen der Tabellen muss du ggf. anpassen.
Gruß
Franz
P.S. Formellösung mit Funktion INDIREKT und kompliziertem umrechnen von Zeilen und Spalten ginge wohl auch, dannach steht mir aber z.Zt. nicht der Sinn.
Bild

Betrifft: AW: Liste umsortieren
von: Gert

Geschrieben am: 03.01.2007 13:33:09
Hallo Franz,
vielen Dank für deine Lösung. Ich würde eigentlich eine "händische" Einmalumstellung bevorzugen. Vielleicht geht das ja, ansonst werde ich mich wohl über dein Makro wagen müssen (Makros sind nicht so ganz meins;-)
liebe Grüße
Gert
 Bild
Excel-Beispiele zum Thema "Liste umsortieren"
Nach dem Zufallsprinzip umsortieren