Ich habe eine Spalte mit solchen Zeichenfolgen:
+---------+
| a bb |
| ccc d |
| ee ffff |
+---------+
(genau ein Leerzeichen in jeder Zeichenfolge), das ich durch das Leerzeichen in zwei Spalten aufteilen möchte:
+-----+------+
| a | bb |
| ccc | d |
| ee | ffff |
+-----+------+
Dies kann durch Setzen B1 =split(A1," ")
und Ziehen der Spalte erfolgen. Aber ich suche nach einer arrayformula
Version davon.
Erfolgloser Versuch: Die Formel =arrayformula(split(A1:A3," "))
löst den Fehler #VALUE aus: "Der Wert von Funktion SPLIT-Parameter 1 sollte nicht leer sein."
=arrayformula(split(A1:A3," "))
aber es funktioniert bei mir sowieso nicht wie gewünscht.Antworten:
Eine Variation der Normalschen Formel unter Verwendung nur eines regulären Auszuges (unter der Annahme von Daten in Spalte A, beginnend in Zeile 2)
quelle
[^ ]
mit[^,]
an zwei Stellen.{regexextract(A2:A, "^[^ ]+"), regexextract(A2:A,"[^ ]+$")}
macht 123 zu einer Zahl.Zu diesem Zweck hat Google ein integriertes Tool eingeführt: Text in Spalten aufteilen .
quelle
Hier ist eine Regex-basierte Formel, die Rubéns Antwort ähnelt :
Hier
^[^ ]+
bedeutet: alle Nicht-Leerzeichen am Anfang der Zeichenfolge und[^ ]+$
bedeutet: alle Nicht-Leerzeichen am Ende der Zeichenfolge. Man kann Leerzeichen durch Komma usw. ersetzen: zum Beispiel[^,]
Dies ist nur für Zeichenfolgen gedacht, die genau ein Trennzeichen enthalten. Andernfalls ist die Ausgabe falsch.
Benutzerdefinierte Funktion
Um die Aufteilung in eine beliebige Anzahl von Zeichenfolgen zu handhaben, habe ich eine benutzerdefinierte Funktion geschrieben, die als verwendet werden kann
arraysplit(A1:A3, " ")
. Es akzeptiert Spaltenbereiche (oder einzelne Zellen) als ersten Parameter und Trennzeichen als zweiten Parameter.Im Gegensatz zur eingebauten
split
Funktion ignoriert diese leere Zeichenfolgen nicht:a,b,,c
ZB durch Komma geteilt werden vier Zellen, von denen die dritte leer ist. (Meiner Meinung nach ist das Ignorieren leerer Zeichenfolgen ein großer Fehler im Design der integriertensplit
Funktion.)Bonusfunktion: Im Gegensatz zur integrierten Aufteilung werden
arraysplit
leere Zeichenfolgen als Trennzeichen akzeptiert. In diesem Fall werden die Zeichenfolgen in separate Zeichen aufgeteilt. (Natürlich wird dieses Verhalten einfach von der Split-Methode von JavaScript geerbt.)quelle
throw
. Siehe mogsdad.wordpress.com/2015/07/08/…Kurze Antwort
Erläuterung
Sieht so aus,
SPLIT()
als würde es Arrays nicht mögen, Arrays als Eingabeparameter zuLEFT()
habenRIGHT()
,FIND()
und sieLEN()
funktionieren gut damit.Ein Array mit zwei Spalten wird verwendet.
Die erste Spalte wird mit erhalten
LEFT()
.Die zweite Spalte wird mit erhalten
RIGHT()
.FIND()
wird verwendet, um die Position des Säulentrenners zu ermitteln. Da das Trennzeichen nicht Teil der ersten Spalte sein soll, benötigen wir ein Array, um 1 von jeder Zeile (SIGN(ROW(A1:A3))
) zu subtrahieren .LEN()-FIND()
Geben Sie uns die Anzahl der Zeichen, die von genommen werden sollenRIGHT()
.quelle
Versuchen Sie Folgendes:
Für mich geht das.
quelle