
Á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.