Excel képlet: Szöveg tömbre osztása -

Tartalomjegyzék

Általános képlet

=FILTERXML(""&SUBSTITUTE(A1,",","")&"","//y")

Összegzés

A szöveg elválasztóval történő felosztásához és az eredmény tömbré alakításához használhatja a FILTERXML függvényt a SUBSTITUTE és TRANSPOSE függvények segítségével. A bemutatott példában a D5 képlete a következő:

=TRANSPOSE(FILTERXML(""&SUBSTITUTE(B5,",","")&"","//y"))

Megjegyzés: A FILTERXML nem érhető el a Mac Excel programjában vagy az Excel Online alkalmazásban.

Megjegyzés: Ezt a trükköt Bill Jelenektől tanultam meg egy MrExcel videóban.

Magyarázat

Az Excelnek nincs olyan funkciója, amely a szöveget tömbre osztaná fel, hasonlóan a PHP explode funkcióhoz vagy a Python split módszerhez. Megkerülő megoldásként használhatja a FILTERXML függvényt, miután először hozzáadta az XML jelölést a szöveghez.

A bemutatott példában több vesszővel elválasztott szöveges karakterlánc van:

"Jim,Brown,33,Seattle,WA"

A cél az információk külön oszlopokra bontása, vesszővel határolóként.

Az első feladat XML jelölés hozzáadása ehhez a szöveghez, hogy XML formátumban elemezhető legyen a FILTERXML függvénnyel. Önkényesen a szöveg minden egyes mezőjét elemmé fogjuk tenni, szülőelemmel együtt. Itt kezdjük a SUBSTITUTE funkcióval:

SUBSTITUTE(B5,",","")

A SUBSTITUTE eredménye egy ilyen szöveges karakterlánc:

"JimBrown33SeattleWA"

A jól formázott XML-címkék biztosítása és az összes elem szülő elembe csomagolása érdekében további, ehhez hasonló XML-címkéket előzünk meg és fűzünk hozzá:

""&SUBSTITUTE(B5,",","")&""

Ez egy ilyen szöveges karakterláncot eredményez (az olvashatóság érdekében sortöréseket adunk hozzá)

" Jim Brown 33 Seattle WA "

Ez a szöveg közvetlenül a FILTERXML függvényhez kerül xml argumentumként, "// y" Xpath kifejezéssel:

FILTERXML("JimBrown33SeattleWA","//y")

Az Xpath elemző nyelv, és a "// y" kiválasztja az összes elemet. A FILTERXML eredménye egy ilyen függőleges tömb:

("Jim";"Brown";33;"Seattle";"WA")

Mivel ebben az esetben vízszintes tömböt szeretnénk, a TRANSPOSE függvényt a FILTERXML köré fonjuk:

=TRANSPOSE(("Jim";"Brown";33;"Seattle";"WA"))

Az eredmény egy ilyen vízszintes tömb:

("Jim","Brown",33,"Seattle","WA")

amely az Excel 365 D5: H5 tartományába ömlik.

érdekes cikkek...