Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
872to876
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
872to876
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

transponieren

transponieren
04.06.2007 10:00:00
mehmet
Hallo Forum,
ich suche und suche werde jedoch nicht passend fündig.
Es geht darum:
In Spalte A stehen Zahlen und Texte.
Es soll immer transponieren, von Zahl zu Zahl.
Dabei dürfen leere Zelle nicht berücksichtigt werden.
Anschliessend soll das Ergebnis umgedreht werden und nicht sortiert werden.
Unten als Beispiel oder als Datei (nicht funktionierende Makro deaktiviert 8-) ):
Tabelle1 als Quelle:
Spalte A
101
Eintrag 1
Eintrag 2
Eintrag 3
Eintrag 5
99
Eintrag 1
Eintrag 2
Eintrag 4
Eintrag 6
Eintrag 7
103
Eintrag 1
Eintrag 2
Eintrag 3
Eintrag 5
Eintrag 6
Eintrag 8
Eintrag 9
Eintrag 10
406
Eintrag 1
Eintrag 2
Eintrag 3
Eintrag 5
Eintrag 7
Eintrag 8
Ergebnis1 in Tabelle2:
A1 B1 C1 D1 E1 ..
101 Eintrag1 Eintrag2 Eintrag3 Eintrag5
99 Eintrag1 Eintrag2 Eintrag4 Eintrag6 Eintrag7
103 Eintrag1 Eintrag2 Eintrag3 Eintrag5 Eintrag6 Eintrag8 Eintrag9 Eintrag10
406 Eintrag1 Eintrag2 Eintrag3 Eintrag5 Eintrag7 Eintrag8
Ergebnis2 in Tabelle3:
A1 B1 C1 D1 E1 ..
406 Eintrag1 Eintrag2 Eintrag3 Eintrag5 Eintrag7 Eintrag8
103 Eintrag1 Eintrag2 Eintrag3 Eintrag5 Eintrag6 Eintrag8 Eintrag9 Eintrag10
99 Eintrag1 Eintrag2 Eintrag4 Eintrag6 Eintrag7
101 Eintrag1 Eintrag2 Eintrag3 Eintrag5
https://www.herber.de/bbs/user/43006.xls
Dank und Gruss
mehmet

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Teillösung
04.06.2007 11:33:00
WF
Hi,
die 4 Zahlen listest Du mit folgender Arrayformel auf:
{=WENN(ZEILE(A1) > ANZAHL(A:A);"";INDEX(A:A;KKLEINSTE(WENN(ISTZAHL(A$1:A$99);ZEILE($1:$99));ZEILE(A1) ))) }
bzw umgekehrt:
{=WENN(ANZAHL(A:A) und runterkopieren
ARRAY-Formel {=geschweifte Klammern} nicht eingeben;
Abschluß der Formel mit gleichzeitig Strg / Shift / Enter; - das erzeugt sie.
Das andere muß ich noch überlegen.
Salut WF

AW: Teillösung
04.06.2007 12:56:25
mehmet
Hallo WF,
danke für deine Musterlösung. So wollte ich es eigendlich nicht haben.
Es fehlen noch die Eintraege. Es werden nur die Zahlen in betracht genommen.
Gruss
mehmet

Anzeige
etwas OT @WF und andere Formel-Spezis
04.06.2007 22:41:00
Christian
Hallo Walter,
Hallo Spezis
für die 2. Lösung folgender Vorschlag und eine große Frage an den Formel-Guru:
Warum bekomme ich den Fehlerwert in E4 obwohl die Bezüge der Indirekt-Formel korrekt ausgegeben werden?
Hast Du, habt Ihr eine Idee?
Achtung, bei mir geht Excel in die Knie, wenn ich die Formelauswertung (auch mit kleineren Bereichen) laufen lasse.
Tabelle1

 ABCDEFGHIJKL
1101  101Eintrag8Eintrag9Eintrag10Eintrag 5    
2Eintrag8  99Eintrag 11Eintrag 12Eintrag 4Eintrag 6Eintrag 7   
3Eintrag9  103Eintrag 111Eintrag 112Eintrag 113Eintrag 115Eintrag 6Eintrag 8Eintrag 10 
4Eintrag10  406#WERT!       
5            
6Eintrag 5           
799           
8Eintrag 11           
9Eintrag 12           
10            
11Eintrag 4           
12            
13Eintrag 6           
14Eintrag 7           
15103           
16Eintrag 111           
17Eintrag 112           
18Eintrag 113           
19            
20Eintrag 115           
21Eintrag 6           
22            
23Eintrag 8           
24            
25Eintrag 10           
26406           
27Eintrag 1           
28Eintrag 2           
29Eintrag 3           
30            
31Eintrag 5           
32            
33Eintrag 7           
34Eintrag 8           

Formeln der Tabelle
ZelleFormel
D1{=WENN(ZEILE()>ANZAHL(A:A); "";INDEX($A$1:$A$1000;KKLEINSTE(WENN(ISTZAHL($A$1:$A$1000); ZEILE($1:$1000)); ZEILE(A1))))}
E1{=WENN(SPALTE(A1)>ANZAHL2(INDIREKT("A"&VERGLEICH($D1;$A$1:$A$1000;0)+1&":A"&WENN($D2="";ZEILE(letzter); VERGLEICH($D2;$A$1:$A$1000;0)-1))); "";INDEX(INDIREKT("A"&VERGLEICH($D1;$A$1:$A$1000;0)+1&":A"&WENN($D2="";ZEILE(letzter); VERGLEICH($D2;$A$1:$A$1000;0)-1)); KKLEINSTE(WENN(INDIREKT("A"&VERGLEICH($D1;$A$1:$A$1000;0)+1&":A"&WENN($D2="";ZEILE(letzter); VERGLEICH($D2;$A$1:$A$1000;0)-1))<>"";ZEILE(INDIREKT("1:"&WENN($D2="";ZEILE(letzter); VERGLEICH($D2;$A$1:$A$1000;0))-VERGLEICH($D1;$A$1:$A$1000;0)-WENN($D2="";0;1)))); SPALTE(A1))))}
D2{=WENN(ZEILE()>ANZAHL(A:A); "";INDEX($A$1:$A$1000;KKLEINSTE(WENN(ISTZAHL($A$1:$A$1000); ZEILE($1:$1000)); ZEILE(A2))))}
E2{=WENN(SPALTE(A2)>ANZAHL2(INDIREKT("A"&VERGLEICH($D2;$A$1:$A$1000;0)+1&":A"&WENN($D3="";ZEILE(letzter); VERGLEICH($D3;$A$1:$A$1000;0)-1))); "";INDEX(INDIREKT("A"&VERGLEICH($D2;$A$1:$A$1000;0)+1&":A"&WENN($D3="";ZEILE(letzter); VERGLEICH($D3;$A$1:$A$1000;0)-1)); KKLEINSTE(WENN(INDIREKT("A"&VERGLEICH($D2;$A$1:$A$1000;0)+1&":A"&WENN($D3="";ZEILE(letzter); VERGLEICH($D3;$A$1:$A$1000;0)-1))<>"";ZEILE(INDIREKT("1:"&WENN($D3="";ZEILE(letzter); VERGLEICH($D3;$A$1:$A$1000;0))-VERGLEICH($D2;$A$1:$A$1000;0)-WENN($D3="";0;1)))); SPALTE(A2))))}
D3{=WENN(ZEILE()>ANZAHL(A:A); "";INDEX($A$1:$A$1000;KKLEINSTE(WENN(ISTZAHL($A$1:$A$1000); ZEILE($1:$1000)); ZEILE(A3))))}
E3{=WENN(SPALTE(A3)>ANZAHL2(INDIREKT("A"&VERGLEICH($D3;$A$1:$A$1000;0)+1&":A"&WENN($D4="";ZEILE(letzter); VERGLEICH($D4;$A$1:$A$1000;0)-1))); "";INDEX(INDIREKT("A"&VERGLEICH($D3;$A$1:$A$1000;0)+1&":A"&WENN($D4="";ZEILE(letzter); VERGLEICH($D4;$A$1:$A$1000;0)-1)); KKLEINSTE(WENN(INDIREKT("A"&VERGLEICH($D3;$A$1:$A$1000;0)+1&":A"&WENN($D4="";ZEILE(letzter); VERGLEICH($D4;$A$1:$A$1000;0)-1))<>"";ZEILE(INDIREKT("1:"&WENN($D4="";ZEILE(letzter); VERGLEICH($D4;$A$1:$A$1000;0))-VERGLEICH($D3;$A$1:$A$1000;0)-WENN($D4="";0;1)))); SPALTE(A3))))}
D4{=WENN(ZEILE()>ANZAHL(A:A); "";INDEX($A$1:$A$1000;KKLEINSTE(WENN(ISTZAHL($A$1:$A$1000); ZEILE($1:$1000)); ZEILE(A4))))}
E4{=WENN(SPALTE(A4)>ANZAHL2(INDIREKT("A"&VERGLEICH($D4;$A$1:$A$1000;0)+1&":A"&WENN($D5="";ZEILE(letzter); VERGLEICH($D5;$A$1:$A$1000;0)-1))); "";INDEX(INDIREKT("A"&VERGLEICH($D4;$A$1:$A$1000;0)+1&":A"&WENN($D5="";ZEILE(letzter); VERGLEICH($D5;$A$1:$A$1000;0)-1)); KKLEINSTE(WENN(INDIREKT("A"&VERGLEICH($D4;$A$1:$A$1000;0)+1&":A"&WENN($D5="";ZEILE(letzter); VERGLEICH($D5;$A$1:$A$1000;0)-1))<>"";ZEILE(INDIREKT("1:"&WENN($D5="";ZEILE(letzter); VERGLEICH($D5;$A$1:$A$1000;0))-VERGLEICH($D4;$A$1:$A$1000;0)-WENN($D5="";0;1)))); SPALTE(A4))))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen
Namen in Formeln
ZelleNameBezieht sich auf
E1letzter=INDIREKT("A"&VERWEIS(2;1/(Tabelle1!$A$1:$A$65535<>"");ZEILE(Tabelle1!$A:$A)))
E2letzter=INDIREKT("A"&VERWEIS(2;1/(Tabelle1!$A$1:$A$65535<>"");ZEILE(Tabelle1!$A:$A)))
E3letzter=INDIREKT("A"&VERWEIS(2;1/(Tabelle1!$A$1:$A$65535<>"");ZEILE(Tabelle1!$A:$A)))
E4letzter=INDIREKT("A"&VERWEIS(2;1/(Tabelle1!$A$1:$A$65535<>"");ZEILE(Tabelle1!$A:$A)))
Namen verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
https://www.herber.de/bbs/user/43028.xls
MfG Christian

Anzeige
AW: etwas OT @WF und andere Formel-Spezis
05.06.2007 00:17:00
mehmet
Wau.. Christian,
was mache ich, wenn meinen Tabelle von einer Textdatei eingelesen wurde, die sehr lang ist.
Dann wächst doch meine xls Datei auf extrem Grösse.
Makro lösung ist doch eleganter.
Gruss
mehmet

AW: etwas OT @WF und andere Formel-Spezis
05.06.2007 00:27:20
Christian
Hallo Mehmet,
das war ja auch nur als "Spielerei" gedacht, denn in der Mappe wirst Du mit den Formel keine Freude haben, da die Berechnung ewig lang dauert.
Ich wollte nur mal wissen, ob sowas mit Formel geht.
Makro ist hier absolut zu empfehlen, habe aber, wie schon öfters erwähnt, von VBA soviel Ahnung wie Goerg W. Busch von Menschenrechten!
Also ich lass mal offen, damit dir evtl. noch jemand Tips für eine Lösung per VBA anbieten kann.
MfG Christian

Anzeige
AW: etwas OT @WF und andere Formel-Spezis
05.06.2007 00:41:00
mehmet
8-)
Dank dir Christian
Herzliche Grüsse
mehmet

OT @WF und andere Formel-Spezis noch offen owT
05.06.2007 08:56:00
Christian

AW: transponieren
04.06.2007 14:18:38
Harald
hi mehmet,
ohne deine Datei angeschaut zu haben, mal so aus der Hüfte
Getestet.
Der Übertrag von Blatt 2 auf Blatt 3 ist aktuell von Spalte A bis Z (ggf. anpassen)
Viel Glück ;-)
Sub test() Dim Lrow As Long, LrowA As Long, x As Long, col As Integer Sheets(2).Cells.ClearContents Lrow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To Lrow If IsNumeric(Sheets(1).Cells(i, 1)) And Sheets(1).Cells(i, 1).Value "" Then x = i + 1 col = 2 LrowA = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row + 1 Sheets(2).Cells(LrowA, 1) = Sheets(1).Cells(i, 1).Value Do If IsNumeric(Cells(x, 1)) Then Exit Do Sheets(2).Cells(LrowA, col) = Sheets(1).Cells(x, 1).Value x = x + 1 col = col + 1 Loop End If Next i Sheets(3).Cells.ClearContents x = 2 LrowA = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row 'Spalten A bis Z umgekehrt von Blatt 2 nach Blatt 3 For i = LrowA To 2 Step -1 Sheets(3).Range("A" & x & ":Z" & x) = Sheets(2).Range("A" & i & ":Z" & i).Value x = x + 1 Next i End Sub


Gruß
Harald

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige