Gibt es eine Möglichkeit, einen String, der sich in einer Zelle befindet, in ein Array aus Zeilen- und Spaltenbereichen umzuwandeln?

Gibt es eine Möglichkeit, einen String, der sich in einer Zelle befindet, in ein Array aus Zeilen- und Spaltenbereichen umzuwandeln?

Ich beabsichtige, diese Namen aus der Liste in eine Bereichsmatrix wie die im Bild gezeigte umzuwandeln. Beim Debuggen der Formel möchte ich, dass mir genau ein Array von Zeilen- und Spaltenbereichen angezeigt wird. Gibt es eine Möglichkeit, diese Namen in einen Bereich wie diesen umzuwandeln?Bildbeschreibung hier eingeben

Antwort1

Wenn Sie die Textzeichenfolge möchten, verwenden Sie:

="={"""&TEXTJOIN(""",""",,SUBSTITUTE($A$2:$A$5," ","""/""")) & """}"

Wenn Sie ein tatsächliches Array möchten, das woanders verwendet wird, verwenden Sie:

IFERROR(FILTERXML("<a><b>"&SUBSTITUTE(TRANSPOSE($A$2:$A$5)," ","</b><b>")&"</b></a>","//b["&ROW($A$1:$A$4)&"]"),"")

Dadurch wird ein 4x4-Array erstellt, das in anderen Formeln verwendet werden kann. Je nach Version muss beim Verlassen des Bearbeitungsmodus Strg-Umschalt-Eingabe anstelle der Eingabetaste verwendet werden, um die Array-Formel zu erzwingen.

Mir ist keine Möglichkeit bekannt, das Gewünschte zu tun F9und das Array in der Formelleiste anzuzeigen.

Antwort2

Nun, der wörtliche String, abzüglich des Tippfehlers „JONH“, den ich einfach nicht wiederholen werde, kann mit Scott Craners Formel erhalten werden, die ganz leicht angepasst wurde (und die ich SEQUENCE()anstelle des ROWS()Tricks verwendet habe, man muss die neuen Funktionen verwenden, um sich an sie zu gewöhnen, oder?) und dann als Grundlage für einige String-Arbeiten verwendet werden:

="={"""&TEXTJOIN("""\""",,INDEX(TRANSPOSE(B234:B237),SEQUENCE(4)))&""","""&TEXTJOIN("""\""",,INDEX(TRANSPOSE(C234:C237),SEQUENCE(4)))&""","""&TEXTJOIN("""\""",,INDEX(TRANSPOSE(D234:D237),SEQUENCE(4)))&""","""&TEXTJOIN("""\""",,INDEX(TRANSPOSE(E234:E237),SEQUENCE(4)))&"""}"

Bedenken Sie, dass es zwar das gewünschte Ergebnis liefert, das Ergebnis jedochNICHTAus der Sicht von Excel ist dies eine Array-Konstante und wird von Excel NICHT genau so verwendet, wie das F9Ergebnis aussehen würde.

Für Excel ist es nur eine Textzeichenfolge. Wenn Sie es also in einer Formel verwenden, wird es wahrscheinlich fehlschlagen oder durch reinen Zufall erfolgreich sein. Vielleicht funktioniert es für einige Anwendungen auch richtig. Aber es ist in keiner Weise dasselbe oder gleichwertig zu Excel wie die Array-Konstante für die interne Verwendung, die durch Hervorheben und Klicken F9erstellt wird.

Das heißt, es ist hässlich und aufgebläht. Ich verfolge den Thread in den Kommentaren wohl nicht hin und her, also verstehe ich nicht, warum Scott Craner „ TRANSPOSE()which“ verwendet hat und mich dazu gezwungen hat, da die gewünschte Ausgabe anscheinend links-rechts ist (Kommentar oben mit „A234 = „Jonh“, …). Wenn ich es also herausnehme und dann sein A2:A5 so anpasse, dass es A1:A4 wird (oder für meine Experimente eine Zeile lösche), erhalte ich:

=IFERROR(FILTERXML("<a><b>"&SUBSTITUTE(($A$234:$A$237)," ","</b><b>")&"</b></a>","//b["&SEQUENCE(1,4)&"]"),"")

für seine Formel und die Überarbeitung meiner Formel, anschließendes Einarbeiten seiner Formel zu einer einzigen Formel, erhalte ich:

="={"""&TEXTJOIN("""\""",,B234:E234)&""","""&TEXTJOIN("""\""",,B235:E235)&""","""&TEXTJOIN("""\""",,B236:E236)&""","""&TEXTJOIN("""\""",,B237:E237)&"""}"

da es übrigens strukturiert und repetitiv aufgebaut ist, kann man die alten CONCATENATE()oder union operatoraltbekannten Tricks verwenden, um es enorm auszubauen, indem man Zeilen und Spalten schön aneinander anpasst, bevor man sie schließlich verknüpft, als Wert etwas Spezielles einfügt und dann ein "=" davor setzt, um eine Formel daraus zu machen. Jetzt noch einfacher. Für Daten, die nicht in vier winzigen Zeilen und weniger als fünf Elementen vorliegen.

Das Ergebnis ist die gewünschte Ergebniszeichenfolge. Allerdings handelt es sich auch hier nicht um ein Ergebnis, das in Excel als identisch mit der Array-Konstante angesehen wird, die Sie nach der Verwendung F9wie erwähnt sehen.

Und die geänderte Scott Craner-Formel würde dann das im Kommentar beschriebene Einzelzellenergebnis liefern. Dieses könnte wiederum in einer Formel verwendet werden, um Excel die Erstellung dieser internen Array-Konstante zu überlassen. Aber NICHT, denke ich, durch Verwendung der String-Formel (die rechnerisch eine Sackgasse ist), sondernVerwenden Sie die (angepasste) Formel von Scott Craner in der Formel, die Sie in so Excel will evaluate it to the desiredeiner Array-Konstante benötigen., und anstatt diese 16 Zellen auszufüllen, geben Sie es dann innerhalb dieser Formel an die Berechnungskette weiter.

Mir ist gerade aufgefallen, dass es in South Park „Scott Tenorman“ (oder so ähnlich) ist, derjenige, an dem Cartman ... Rache nimmt. Es stört mich nicht mehr im Geringsten, immer wieder „Scott Craner“ zu sagen!

verwandte Informationen