Microsoft Excel

Herbers Excel/VBA-Archiv

transponieren | Herbers Excel-Forum


Betrifft: transponieren von: Norbert Hasenöhrl
Geschrieben am: 11.12.2009 16:42:19

Wie kann ich eine Liste mit Adressen, also:

Kunde Straße Ort
Kunde II Straße Ort
Kunde III Straße Ort
vertikal transponieren?

MTRANS ist mir bekannt, allerdings stehen die Adressen dann transponiert nebeneinander in Spalten;möchte die Adressen in einer Spalte untereinander stehen haben also:

Kunde
Straße
Ort
Kunde II
Straße
Ort
Kunde III
Straße
Ort

Danke für Rückantwort!

  

Betrifft: AW: transponieren von: Josef Ehrensberger
Geschrieben am: 11.12.2009 16:57:44

Hallo Norbert,

so.

Tabelle3

 ABC
1Kunde 1Strasse 1Ort 1
2Kunde 2Strasse 2Ort 2
3Kunde 3Strasse 3Ort 3
4   
5   
6   
7   
8   
9   
10Kunde 1  
11Strasse 1  
12Ort 1  
13Kunde 2  
14Strasse 2  
15Ort 2  
16Kunde 3  
17Strasse 3  
18Ort 3  
19   
20   
21   

Formeln der Tabelle
ZelleFormel
A10=INDIREKT(ADRESSE(GANZZAHL((ZEILE(A1)-1)/3)+1;REST(ZEILE(A1)-1;3)+1))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4




Gruß Sepp



  

Betrifft: Per verschachtelte INDEX()-Funktion von: NoNet
Geschrieben am: 11.12.2009 17:00:38

Hallo norbert,

so geht's (Funktion in E1 eingeben und runterkopieren) :

ABCDE
1
2
3
4
5
6
7
8
9

Funktionen im Tabellenblatt :
Zelle Formel 
E1   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 
E2   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 
E3   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 
E4   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 
E5   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 
E6   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 
E7   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 
E8   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 
E9   =INDEX($A$1:$C$3;GANZZAHL((ZEILE()-1)/3)+1;REST(ZEILE()-1;3)+1) 

Tabelle eingefügt mit Syntaxhighlighter 4.15

Gruß, NoNet


  

Betrifft: AW: transponieren von: Tino
Geschrieben am: 11.12.2009 17:10:19

Hallo,
kannst mal diesen Code testen.

Sub TransposnierenSpezial()
Dim varAr(), tmpAr()
Dim Bereich As Range
Dim A As Long, LCount As Long

'eventuell Bereich anpassen, hier ab A2 
With Sheets("Tabelle1")
    Set Bereich = .Range("A2", .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 3))
End With

varAr = Bereich.Value2
Redim tmpAr(1 To Ubound(varAr) * 3, 1 To 1)

LCount = 1

For A = 1 To Ubound(varAr)
 tmpAr(LCount, 1) = varAr(A, 1)
 tmpAr(LCount + 1, 1) = varAr(A, 2)
 tmpAr(LCount + 2, 1) = varAr(A, 3)
 LCount = LCount + 3
Next A

Bereich.ClearContents
Bereich.Cells(1, 1).Resize(Ubound(tmpAr)) = tmpAr

End Sub
Gruß Tino


  

Betrifft: AW: transponieren von: Norbert Hasenöhrl
Geschrieben am: 14.12.2009 13:14:24

Hallo Leute ich bin vollkommen überrascht von den schnellen Antworten. Besten Dank!

funktioniert alles super; habe mich für die Makro-Lösung von Tino entschieden! Bin echt happy!