Excel-formel: Dela text med avgränsare -

Generisk formel

=TRIM(MID(SUBSTITUTE(A1,delim,REPT(" ",LEN(A1))),(N-1)*LEN(A1)+1,LEN(A1)))

Sammanfattning

För att dela text i en godtycklig avgränsare (komma, mellanslag, rör, etc.) kan du använda en formel baserad på funktionerna TRIM, MID, SUBSTITUTE, REPT och LEN. I exemplet som visas är formeln i C5:

=TRIM(MID(SUBSTITUTE($B5,"|",REPT(" ",LEN($B5))),(C$4-1)*LEN($B5)+1,LEN($B5)))

Obs: referenser till B5 och C4 är blandade referenser så att formeln kan kopieras över och ned.

Förklaring

Kärnan i denna formel är att ersätta en given avgränsare med ett stort antal mellanslag med SUBSTITUTE och REPT, använd sedan MID-funktionen för att extrahera text relaterad till "nth förekomst" och TRIM-funktionen för att bli av med det extra utrymmet.

I detta utdrag ersätts avgränsaren (avgränsningen) med ett antal mellanslag som är lika med strängens totala längd:

SUBSTITUTE(A1,delim,REPT(" ",LEN(A1)))

Sedan använder formeln MID-funktionen för att extrahera den nionde strängen. Startpunkten beräknas med koden nedan, där N representerar "nth":

(N-1)*LEN(A1)+1

Det totala antalet extraherade tecken är lika med längden på hela textsträngen. TRIM-funktionen tar sedan bort alla extra mellanslag och returnerar bara den n: e strängen.

Extrahera bara en instans

Även om exemplet är inställt på att extrahera 5 understrängar från texten i kolumn B, kan du enkelt extrahera bara en instans. För att till exempel bara extrahera det fjärde objektet (stad) kan du använda:

=TRIM(MID(SUBSTITUTE(B5,"|",REPT(" ",LEN(B5))),(4-1)*LEN(B5)+1,LEN(B5)))

Text till kolumner-funktionen

För manuella engångskonverteringar har Excel en inbyggd funktion som heter "Text till kolumner" som kan dela text i celler med en avgränsare efter eget val. Du hittar den här funktionen på fliken Data i menyfliksområdet i avsnittet Dataverktyg.

Intressanta artiklar...