Der schnellste Weg, um eine Spalte oder Wertezeile in ein zweidimensionales Array umzuwandeln, besteht darin, die Funktion "WrapCols oder Wraprows" zu verwenden.
Seit den frühesten Tagen von Excel ist es sehr gut darin, Zahlen zu berechnen und zu analysieren. Die Manipulation von Arrays war jedoch traditionell eine Herausforderung. Die Einführung dynamischer Arrays erleichterte die Verwendung von Array -Formeln viel. Und jetzt veröffentlicht Microsoft eine Reihe neuer dynamischer Array-Funktionen, um Arrays zu manipulieren und neu zu fördern. In diesem Tutorial werden Sie beigebracht, wie Sie zwei solcher Funktionen, Wrapcols und Wrawrows verwenden, um eine Spalte oder eine Zeile in kürzester Zeit in ein 2D -Array zu verwandeln.
Die WrapCols-Funktion in Excel verwandelt eine Zeile oder Wertespalte in ein zweidimensionales Array basierend auf der angegebenen Anzahl von Werten pro Zeile.
Die Syntax hat die folgenden Argumente:
WrapCols (Vektor, Wrap_count, [Pad_With])Wo:
Zum Beispiel, um den Bereich B5: B24 auf ein zweidimensionales Array mit 5 Werten pro Spalte zu ändern, lautet die Formel:
=WRAPROWS(B5:B24, 5)
Sie betreten die Formel in jeder einzelnen Zelle und sie verschüttet automatisch in so viele Zellen nach Bedarf. In der Ausgabe von WrapCols werden die Werte von oben nach unten vertikal angeordnet, basierend auf dem Wrap_count -Wert. Nachdem die Anzahl erreicht wurde, wird eine neue Kolumne gestartet.
Die Wrawrows-Funktion in Excel wandelt eine Zeile oder Wertespalte in ein zweidimensionales Array um, basierend auf der Anzahl der von Ihnen angegebenen Werte pro Zeile.
Die Syntax ist wie folgt:
Wraprows (Vector, Wrap_count, [pad_with])Wo:
Um den Bereich B5: B24 in ein 2D -Array mit 5 Werten in jeder Zeile zu verwandeln, lautet die Formel:
=WRAPROWS(B5:B24, 5)
Sie betreten die Formel in der oberen linken Zelle des Verschüttungsbereichs und fülle alle anderen Zellen automatisch. Die Wraprows -Funktion ordnet die Werte horizontal von links nach rechts an, basierend auf dem Wrap_count -Wert. Nach dem Erreichen der Zählung beginnt es eine neue Reihe.
Beide Funktionen sind nur für Microsoft 365 (Windows und Mac) und Excel für das Web erhältlich.
In früheren Versionen können Sie traditionelle komplexere Formeln verwenden, um Spalten-zu-Array- und Zeilen-Array-Transformationen durchzuführen. In diesem Tutorial werden wir die alternativen Lösungen im Detail diskutieren.
Tipp. Um eine umgekehrte Operation durchzuführen, ändern Sie ein 2D -Array in eine einzelne Spalte oder Zeile und verwenden Sie die Funktion der Tocol- bzw. Torow -Funktion.
Nachdem Sie die grundlegende Nutzung im Griff haben, schauen wir uns ein paar spezifischere Fälle genauer an.
Abhängig von der Struktur Ihrer ursprünglichen Daten ist es möglicherweise geeignet, dass Sie in Spalten (Wrapcols) oder Zeilen (Wraprows) in Säulen umgewandelt werden. Welche Funktion Sie verwenden, es ist das Argument Wrap_count , das die maximale Anzahl der Werte in jeder Spalte/Zeile bestimmt.
Um den Bereich B4: B23 in ein 2D -Array zu verwandeln, so dass jede Spalte maximal 10 Werte hat, verwenden Sie diese Formel:
=WRAPCOLS(B4:B23, 10)
Um den gleichen Bereich nach Zeile neu zu ordnen, so dass jede Zeile maximal 4 Werte hat, lautet die Formel:
=WRAPROWS(B4:B23, 4)
Das Bild unten zeigt, wie das aussieht:
Falls es nicht genügend Werte gibt, um alle Spalten/Zeilen des resultierenden Bereichs zu füllen, gibt Wraprows und Wrapcols #N/A -Fehler zurück, um die Struktur des 2D -Arrays aufrechtzuerhalten.
Um das Standardverhalten zu ändern, können Sie einen benutzerdefinierten Wert für das optionale Argument pad_with angeben.
Um den Bereich B4: B21 in ein 2D -Array mit maximal 5 Werten zu verwandeln und die letzte Zeile mit Strichen zu packen, wenn nicht genügend Daten zum Ausfüllen vorhanden sind, verwenden Sie diese Formel:
=WRAPROWS(B4:B21, 5, "-")
Um die fehlenden Werte durch Zeichenfolgen von Null-Länge (Leerzeichen) zu ersetzen, lautet die Formel:
=WRAPROWS(B4:B21, 5, "")
Bitte vergleichen Sie die Ergebnisse mit dem Standardverhalten (Formel in D5), wobei Pad_With weggelassen wird:
Um ein paar separate Zeilen in ein einzelnes 2D -Array zu kombinieren, stapeln Sie zuerst die Zeilen horizontal mit der HSTACK -Funktion und wickeln dann die Werte mit Wickrows oder Wrapcols ein.
Um beispielsweise die Werte aus 3 Zeilen (B5: J5, B7: G7 und B9: F9) zusammenzuführen und in Spalten einzuwickeln, die jeweils 10 Werte enthalten, lautet die Formel:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Um Werte aus mehreren Zeilen in einen 2D -Bereich zu kombinieren, in dem jede Zeile 5 Werte enthält, nimmt die Formel diese Form an:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Um mehrere Spalten in einen 2D -Bereich zusammenzuführen, stapeln Sie sie zuerst mit der VStack -Funktion vertikal und wickeln Sie die Werte in Zeilen (Wrawrows) oder Spalten (WrapCols) ein.
Zum Beispiel, um die Werte aus 3 Spalten (B5: J5, B7: G7 und B9: F9) in einen 2D -Bereich zu kombinieren, in dem jede Spalte 10 Werte enthält, ist die Formel:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Verwenden Sie diese Formel, um dieselben Spalten in einem 2D -Bereich zu kombinieren, in dem jede Zeile 5 Werte enthält:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Wenn der Quellbereich in zufälliger Reihenfolge Werte hat, während Sie die Ausgabe sortieren möchten, gehen Sie auf diese Weise vor:
Zum Beispiel, um den Bereich B4: B23 in Zeilen zu wickeln, jeweils 4 Werte und den resultierenden Bereich von a bis z sortieren, konstruieren Sie eine solche Formel:
=WRAPROWS(SORT(B4:B23), 4)
Um denselben Bereich in Spalten, jeweils 10 Werte zu wickeln und die Ausgabe alphabetisch zu sortieren, lautet die Formel:
=WRAPCOLS(SORT(B4:B23), 10)
Die Ergebnisse sehen wie folgt aus:
Tipp. Um die Werte im resultierenden Array in absteigender Reihenfolge anzuordnen, setzen Sie das dritte Argument ( Sort_order ) der Sortierfunktion auf -1.
In älteren Excel-Versionen, bei denen die WrapCols-Funktion nicht unterstützt wird, können Sie Ihre eigene Formel erstellen, um die Werte aus einem eindimensionalen Array in Spalten zu wickeln. Dies kann durch die Verwendung von 5 verschiedenen Funktionen zusammen erfolgen.
Wrapcols Alternative, um eine Zeile in den 2D -Bereich umzuwandeln:
Ifror (if (Zeile (a1)> n , "", index ( row_range , row (a1) (Spalte (a1) -1)* n )), "")Wrapcols Alternative, um eine Spalte in 2D -Bereich umzuwandeln:
Ifror (if (Zeile (a1)> n , "", index ( column_range , Zeile (a1) (Spalte (A1) -1)* n )), "")Wobei n die maximale Anzahl von Werten pro Spalte ist.
Im Bild unten verwenden wir die folgende Formel, um einen Einreihenbereich (D4: J4) in ein Drei-Reihen-Array zu verwandeln.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) (COLUMN(A1)-1)*3)), "")
Und diese Formel ändert einen Einspaltenbereich (B4: B20) in ein Fünf-Reihen-Array:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) (COLUMN(A1)-1)*5)), "")
Die obigen Lösungen emulieren die analogen Wrapcols -Formeln und erzeugen die gleichen Ergebnisse:
=WRAPCOLS(D4:J4, 3, "")
Und
=WRAPCOLS(B4:B20, 5, "")
Beachten Sie bitte, dass die herkömmlichen Formeln im Gegensatz zur Funktion der dynamischen Array-Wrapcols dem Ein-Formula-Ein-Zell-Ansatz folgen. Unsere erste Formel wird also in D8 eingegeben und 3 Zeilen nach unten und 3 Spalten nach rechts kopiert. Die zweite Formel wird in D14 eingegeben und 5 Zeilen nach unten und 4 Spalten nach rechts kopiert.
Wie diese Formeln funktionieren
Im Zentrum beider Formeln verwenden wir die Indexfunktion, die einen Wert aus dem angegebenen Array basierend auf einer Zeile und einer Spaltennummer zurückgibt:
Index (Array, row_num, [column_num])Während wir uns mit einem Reihen-Array befassen, können wir das Argument von row_num weglassen, sodass es standardmäßig ist. Der Trick besteht darin, dass Col_num automatisch für jede Zelle berechnet wird, in der die Formel kopiert wird. Und so machen wir das:
ROW(A1) (COLUMN(A1)-1)*3)
Die Zeilenfunktion gibt die Zeilennummer der A1 -Referenz zurück, die 1 ist.
Die Spaltenfunktion gibt die Spaltennummer der A1 -Referenz zurück, die ebenfalls 1. Subtrahieren 1 in Null macht. Und multiplizieren 0 mit 3 ergibt 0.
Dann addieren Sie 1 nach Zeile zurückgegeben und 0 per Spalte zurückgegeben und erhalten dadurch 1.
Auf diese Weise unterliegt die Indexformel in der oberen linken Zelle des Zielbereichs (D8) diese Transformation:
INDEX($D$4:$J$4, ,ROW(A1) (COLUMN(A1)-1)*3))
Änderungen an
INDEX($D$4:$J$4, ,1)
und gibt den Wert aus der 1. Spalte des angegebenen Arrays zurück, die "Äpfel" in D4 sind.
Wenn die Formel in Zelle D9 kopiert wird, ändern sich die relativen Zellreferenzen basierend auf einer relativen Position von Zeilen und Spalten, während die Absolutbereichsreferenz unverändert bleibt:
INDEX($D$4:$J$4,, ROW(A2) (COLUMN(A2)-1)*3))
dreht sich in:::
INDEX($D$4:$J$4,, 2 (1-1)*3))
wird:
INDEX($D$4:$J$4,, 2))
und gibt den Wert aus der 2. Spalte des angegebenen Arrays zurück, das in E4 "Aprikosen" ist.
Die IF -Funktion überprüft die Zeilennummer und wenn sie größer als die Anzahl der von Ihnen angegebenen Zeilen ist (3 in unserem Fall) gibt eine leere Zeichenfolge zurück (""), ansonsten das Ergebnis der Indexfunktion:
IF(ROW(A1)>3, "", INDEX(…))
Schließlich behebt die Ifrorfunktion einen #REF! Fehler, der auftritt, wenn die Formel in mehr Zellen kopiert wird als wirklich erforderlich.
Die zweite Formel, die eine Spalte in 2D -Bereich umwandelt, funktioniert mit derselben Logik. Der Unterschied besteht darin, dass Sie die Zeilenspaltekombination verwenden, um das Row_num -Argument für den Index herauszufinden. Der Parameter col_num wird in diesem Fall nicht benötigt, da es nur eine Spalte im Quellarray gibt.
Um die Werte aus einem eindimensionalen Array in EXCEL 2019 und früher in Zeilen zu wickeln, können Sie die folgenden Alternativen zur Wraprows-Funktion verwenden.
Verwandeln Sie eine Reihe in 2D -Bereich:
Ifror (if (Spalte (a1)> n , "", index ( row_range , Spalte (a1) (Zeile (A1) -1)* n )), "")Ändern Sie eine Spalte in 2D -Bereich:
Ifror (if (Spalte (a1)> n , "", Index ( Spalte_Range , Spalte (A1) (Zeile (A1) -1)* n )), "")Wobei n die maximale Anzahl von Werten pro Zeile ist.
In unserem Beispieldatensatz verwenden wir die folgende Formel, um einen Einreihenbereich (D4: J4) in einen dreispaltigen Bereich umzuwandeln. Die Formel landet in der Zelle D8 und wird dann über 3 Säulen und 3 Zeilen kopiert.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1) (ROW(A1)-1)*3)), "")
Um einen 1-Spal-Bereich (B4: B20) in einen 5-Spal-Bereich umzuformieren, geben Sie die folgende Formel in D14 ein und ziehen Sie sie über 5 Spalten und 4 Zeilen.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1) (ROW(A1)-1)*5)), "")
In Excel 365 können die gleichen Ergebnisse mit den äquivalenten Wrapcols -Formeln erzielt werden:
=WRAPROWS(D4:J4, 3, "")
Und
=WRAPROWS(B4:B20, 5, "")
Wie diese Formeln funktionieren
Im Wesentlichen funktionieren diese Formeln wie im vorherigen Beispiel. Der Unterschied besteht darin, wie Sie die Koordinaten row_num und col_num für die Indexfunktion bestimmen:
INDEX($D$4:$J$4,, COLUMN(A1) (ROW(A1)-1)*3))
Um die Spaltennummer für die obere linke Zelle im Zielbereich (D8) zu erhalten, verwenden Sie diesen Ausdruck:
COLUMN(A1) (ROW(A1)-1)*3)
das ändert sich zu:
1 (1-1)*3
und gibt 1.
Infolgedessen gibt die folgende Formel den Wert aus der ersten Spalte des angegebenen Arrays zurück, nämlich "Äpfel":
INDEX($D$4:$J$4,, 1)
Bisher ist das Ergebnis das gleiche wie im vorherigen Beispiel. Aber mal sehen, was in anderen Zellen passiert ...
In Zelle D9 ändern sich die relativen Zellreferenzen wie folgt:
INDEX($D$4:$J$4,, COLUMN(A2) (ROW(A2)-1)*3))
Die Formel verwandelt sich also in:
INDEX($D$4:$J$4,, 1 (2-1)*3))
wird:
INDEX($D$4:$J$4,, 4))
und gibt den Wert aus der 4. Spalte des angegebenen Arrays zurück, das "Kirschen" in G4 ist.
Die If -Funktion überprüft die Spaltennummer und wenn sie größer als die Anzahl der angegebenen Spalten ist, gibt eine leere Zeichenfolge ("") zurück, ansonsten das Ergebnis der Indexfunktion:
IF(COLUMN(A1)>3, "", INDEX(…))
Als Finishing -Touch verhindert IreFerror #REF! Fehler beim Erscheinen in "zusätzlichen" Zellen, wenn Sie die Formel in mehr Zellen kopieren als tatsächlich benötigt.
Wenn die "Wrap" -Funktionen in Ihrem Excel nicht verfügbar sind oder zu einem Fehler führen, ist es höchstwahrscheinlich einer der folgenden Gründe.
In Excel 365 ein #name? Fehler kann auftreten, da Sie den Namen der Funktion falsch geschrieben haben. In anderen Versionen zeigt dies an, dass die Funktionen nicht unterstützt werden. Als Problemumgehung können Sie Wrapcols -Alternative oder Wraprows -Alternative verwenden.
Ein #Value-Fehler tritt auf, wenn das Vektorargument kein eindimensionales Array ist.
Ein #num -Fehler tritt auf, wenn der Wert von Wrap_count 0 oder negative Zahl beträgt.
Meistens zeigt ein #Spill -Fehler an, dass nicht genügend leere Zellen vorhanden sind, um die Ergebnisse zu verschütten. Löschen Sie die benachbarten Zellen, und es wird weg sein. Wenn der Fehler bestehen, schauen Sie sich an, was #spill in Excel bedeutet und wie Sie ihn beheben können.
So verwenden Sie die WrapCols und Wrawrows-Funktionen, um einen eindimensionalen Bereich in ein zweidimensionales Array in Excel umzuwandeln. Ich danke Ihnen für das Lesen und hoffe, Sie nächste Woche in unserem Blog zu sehen!
WrapCols and Wraprows -Funktionen - Beispiele (.xlsx -Datei)
Das obige ist der detaillierte Inhalt vonKonvertieren Sie die Spalte / Zeile in Array in Excel: Wrapcols & Wraprows -Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!