Hier ist eine Regex-basierte Formel, die Rubéns Antwort ähnelt :
=arrayformula({regexextract(A1:A3,"^[^ ]+"), regexextract(A1:A3,"[^ ]+$")})
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 integrierten split
Funktion.)
/**
* Splits a column of strings by a separator.
*
* @param {A1:A3} range Column range or a single cell
* @param {" "} separator Separating character or substring
* @returns Substrings, including empty strings
* @customfunction
*/
function arraysplit(range, separator) {
if (range.constructor !== Array) {
range = [[range]]; // handle single-cell input
}
if (range[0].length !== 1) {
throw new Error('First argument must be a column range');
}
var i, j, split, output = [], width = 1;
for (i = 0; i < range.length; i++) {
split = range[i][0].split(separator);
output.push(split);
width = Math.max(width, split.length); // max number of pieces
}
for (i = 0; i < output.length; i++) {
for (j = 0; j < width - output[i].length; j++) {
output[i].push(''); // empty string to make rectangular array
}
}
return output;
}
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.)
=arrayformula(split(A1:A3," "))
aber es funktioniert bei mir sowieso nicht wie gewünscht.