Transponieren Sie eine Matrixtabelle in 3 Spalten in Excel

1

Ich habe eine Matrix-Stil-Tabelle in Excel, wobei B1: Z1 Spaltenüberschriften und A2: A99 Zeilenüberschriften sind. Ich möchte diese Tabelle in eine Tabelle mit 3 Spalten (Spaltenüberschrift, Zeilenüberschrift, Zellenwert) konvertieren. Es spielt keine Rolle, in welcher Reihenfolge sich die neue Tabelle befindet.

    A   B   C   D            A   B   C            A   B   C   
 1      H1  H2  H3        1  H1  R1  V1        1  H1  R1  V1
 2   R1 V1  V2  V3   =>   2  H1  R2  V4   or   2  H2  R1  V2
 3   R2 V4  V5  V6        3  H1  R3  V7        3  H3  R1  V3
 4   R3 V7  V8  V9        4  H2  R1  V2        4  H1  R2  V4
                          5  H2  R2  V5        5  H2  R2  V5
                          6  H2  R3  V8        6  H3  R2  V6
                          7  H3  R1  V3        7  H1  R3  V7
                          8  H3  R2  V6        8  H2  R3  V8
                          9  H3  R3  V9        9  H3  R3  V8

Ich habe mit der OFFSET-Funktion herumgespielt, um die gesamte Tabelle zu erstellen, aber ich habe das Gefühl, dass eine Kombination aus TRANSPOSE und V / HLOOKUP erforderlich ist.

Vielen Dank

BEARBEITEN

Ich habe es geschafft, die richtigen Formeln zu finden. Wenn sich die Daten in Sheet1 wie in meinem obigen Beispiel befinden, gehen die Formeln in Sheet2:

[A1] =IF(ROW() <= COUNTA(Sheet1!$B$1:$Z$1)*COUNTA(Sheet1!$A$2:$A$99), OFFSET(Sheet1!$A$1,0,IF(MOD(ROW(),COUNTA(Sheet1!$B$1:$Z$1))=0,COUNTA(Sheet1!$B$1:$Z$1),MOD(ROW(),COUNTA(Sheet1!$B$1:$Z$1)))),"")

[B1] =IF(ROW() <= COUNTA(Sheet1!$B$1:$Z$1)*COUNTA(Sheet1!$A$2:$A$99),OFFSET(Sheet1!$A$1,IF(MOD(ROW(),COUNTA(Sheet1!$A$2:$A$99))=0,COUNTA(Sheet1!$A$2:$A$99),MOD(ROW(),COUNTA(Sheet1!$A$2:$A$99))),0),"")

[C1] =IF(ROW() <= COUNTA(Sheet1!$B$1:$Z$1)*COUNTA(Sheet1!$A$2:$A$99),OFFSET(Sheet1!$A$1,IF(MOD(ROW(),COUNTA(Sheet1!$A$2:$A$99))=0,COUNTA(Sheet1!$A$2:$A$99),MOD(ROW(),COUNTA(Sheet1!$A$2:$A$99))),IF(MOD(ROW(),COUNTA(Sheet1!$B$1:$Z$1))=0,COUNTA(Sheet1!$B$1:$Z$1),MOD(ROW(),COUNTA(Sheet1!$B$1:$Z$1)))),"")

Die Formeln sind auf B1: Z1 für die Überschriften und A2: A99 für die Zeilen beschränkt (diese können bei Bedarf auf ihre Maximalwerte erhöht werden). Die Formel COUNTA () gibt die Anzahl der Zellen zurück, die tatsächlich Werte enthalten, wodurch die Anzahl der zurückgegebenen Zeilen auf Überschriften * Zeilen begrenzt wird. Andernfalls könnten die Formeln aufgrund der MOD-Funktion unendlich weitergehen.

user21549
quelle

Antworten:

2

Ich mag diese Frage :)

Probieren Sie diese Funktionen aus. füge sie in h0, r0, v0 ein und ziehe sie nach unten

   h   r   v
0 (a) (b) (c)
1 | | | | | |
2 \ / \ / \ /
3  v   v   v

Dabei gilt:
h = Kopfzeile
r = Zeilenbezeichnung
v = Wertebezeichnung

(a) = OFFSET ($ A $ 1, INT (H2 / 99) + 1, MOD (H2,99) +1,1,1)
(b) = OFFSET ($ A $ 1, INT (H2 / 99) +1 , 0,1,1)
(c) = OFFSET ($ A $ 1,0, MOD (H2,99) +1,1,)

wobei H2 eine Spalte mit Werten ist: 0,1,2,3 ...

Cornelius
quelle
OFFSET ist hier definitiv der richtige Ansatz. TRANSPOSE wechselt Zeilen für Spalten und lässt wahrscheinlich genauso viel Arbeit zu tun. Ich wäre versucht, die Funktionen so zu erstellen, dass sie die tatsächliche Anzahl der Datenzeilen und -spalten anstelle fester Werte verwenden.
AdamV
Ich habe Probleme beim Anwenden Ihrer Formeln. Können Sie sie an mein Beispiel oben mit 3 Überschriften und 3 Zeilen anpassen. Die Daten befinden sich in Sheet1 und die Formeln in Sheet2. Vielen Dank.
user21549
Die Verwendung Ihrer Formeln hat mir geholfen, eine Lösung zu finden. Thanks
user21549
1

Ich habe vor ein paar Wochen bei StackOverflow eine etwas allgemeinere Version der von @Dick Kusleika bereitgestellten Lösung gesehen: Konvertieren von Zeilen mit Datenspalten in Spalten mit mehreren Zeilen in Excel 2007 . Es scheint keine Verweise auf einzelne Zeilen zu geben ( ROW()stattdessen using ), erfordert jedoch, dass die Anzahl der Spalten fest codiert ist.

technomalogisch
quelle