Innehållsförteckning
I handledningen visas hur du använder den helt nya funktionen TEXTSPLIT för att dela upp strängar i Excel 365 med en valfri avgränsare som du anger.
Det kan finnas olika situationer när du behöver dela upp celler i Excel. I tidigare versioner hade vi redan ett antal instrument för att utföra uppgiften, t.ex. Text till kolumner och Fill Flash. Nu har vi också en särskild funktion för detta, TEXTSPLIT, som kan dela upp en sträng i flera celler i kolumner och/eller rader baserat på de parametrar som du anger.
Excel TEXTSPLIT-funktionen
Funktionen TEXTSPLIT i Excel delar upp textsträngar med en given avgränsare i kolumner och/eller rader. Resultatet är en dynamisk matris som automatiskt sprids till flera celler.
Funktionen kan ta emot upp till 6 argument, varav endast de två första är nödvändiga.
TEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty], [match_mode], [pad_with])text (obligatoriskt) - texten som ska delas. Kan anges som en sträng eller som en cellreferens.
col_delimiter (obligatoriskt) - ett eller flera tecken som anger var texten ska delas upp mellan kolumnerna. Om det utelämnas, row_delimiter måste definieras.
row_delimiter (valfritt) - ett eller flera tecken som anger var texten ska delas upp mellan raderna.
ignore_empty (valfritt) - anger om tomma värden ska ignoreras eller inte:
- FALSE (standard) - skapar tomma celler för på varandra följande avgränsare utan ett värde emellan.
- TRUE - ignorerar tomma värden, dvs. skapar inte tomma celler för två eller flera på varandra följande avgränsare.
match_mode (valfritt) - bestämmer om avgränsaren är skiftlägeskänslig. Som standard är den aktiverad.
- 0 (standard) - skiftlägeskänslig
- 1 - skiftlägeskänslig
pad_with (valfritt) - ett värde som ska användas i stället för saknade värden i tvådimensionella matriser. Standardvärdet är ett #N/A-fel.
Om du till exempel vill dela upp en textsträng i A2 i flera celler med ett kommatecken och ett mellanslag som separator är formeln följande:
=TEXTSPLIT(A2, ", ")
Tillgänglighet för TEXTSPLIT
Funktionen TEXTSPLIT är endast tillgänglig i Excel för Microsoft 365 (Windows och Mac) och Excel för webben.
Tips:
- I Excel-versioner där TEXTSPLIT-funktionen inte är tillgänglig (förutom Excel 365) kan du använda guiden Text till kolumner för att dela celler.
- För att utföra den omvända uppgiften, dvs. för att sammanfoga innehållet i flera celler till en med en viss avgränsare, är TEXTJOIN den funktion du ska använda.
Grundläggande TEXTSPLIT-formel för att dela en cell i Excel
Till att börja med ska vi se hur man använder en TEXTSPLIT-formel i sin enklaste form för att dela upp en textsträng med en viss avgränsare.
Dela en cell horisontellt över kolumnerna
Om du vill dela upp innehållet i en given cell i flera kolumner anger du en referens till den cell som innehåller den ursprungliga strängen för den första ( text ) och den avgränsare som markerar den punkt där delningen ska ske för det andra ( col_delimiter ) argumentet.
Om du till exempel vill separera strängen i A2 horisontellt med ett kommatecken är formeln:
=TEXTSPLIT(A2, ",")
Som avgränsare använder vi ett kommatecken inom dubbla citattecken (",").
Varje objekt som separeras med ett kommatecken placeras i en egen kolumn:
Dela en cell vertikalt över raderna
För att dela upp texten på flera rader används det tredje argumentet ( row_delimiter ) är den plats där du placerar avgränsaren. Det andra argumentet ( col_delimiter ) utelämnas i detta fall.
Om du till exempel vill dela upp värdena i A2 på olika rader är formeln:
=TEXTSPLIT(A2, ,",")
Observera att formeln i båda fallen endast anges i en cell (C2). I angränsande celler spills de returnerade värdena automatiskt. Den resulterande matrisen (som kallas ett spill-område) markeras med en blå kant som visar att allt som finns i den beräknas med formeln i den övre vänstra cellen.
Dela texten med delsträngar
I många fall är värdena i källsträngen separerade med en sekvens av tecken, till exempel ett kommatecken och ett mellanslag. För att hantera detta scenario använder du en delsträng som avgränsare.
Om du till exempel vill dela upp texten i A2 i flera kolumner med ett kommatecken och ett mellanslag använder du strängen ", " för col_delimiter .
=TEXTSPLIT(A2, ", ")
Formeln placeras i B2, och sedan kopierar du den nedåt i så många celler som behövs.
Dela strängen i kolumner och rader på en gång
Om du vill dela upp en textsträng i rader och kolumner i taget definierar du båda avgränsarna i TEXTSPLIT-formeln.
För att dela upp textsträngen i A2 över kolumner och rader anger vi till exempel:
- Likhetstecknet ("=") för col_delimiter
- Ett kommatecken och ett mellanslag (", ") för row_delimiter
Den fullständiga formeln har följande form:
=TEXTSPLIT(A2, "=", ", ", ")
Resultatet är en 2-D-matris som består av 2 kolumner och 3 rader:
Separera celler med flera avgränsare
För att hantera flera eller inkonsekventa avgränsare i källsträngen använder du en arraykonstant som {"x", "y", "z"} som argument för avgränsare.
I skärmdumpen nedan är texten i A2 avgränsad av både kommatecken (",") och semikolon (";") med och utan mellanslag. För att dela upp strängen vertikalt i rader med alla fyra varianter av avgränsare är formeln:
=TEXTSPLIT(A2, , , {",",",", ",";",","; "})
Du kan också inkludera endast ett kommatecken (",") och semikolon (";") i matrisen och sedan ta bort extra mellanslag med hjälp av TRIM-funktionen:
=TRIM(TEXTSPLIT(A2, , , {",",",";"}))
Dela text utan att ta hänsyn till tomma värden
Om strängen innehåller två eller flera på varandra följande avgränsare utan ett värde mellan dem kan du välja om du vill ignorera sådana tomma värden eller inte. Detta beteende styrs av den fjärde ignore_empty som är FALSE som standard.
Som standard ignorerar TEXTSPLIT-funktionen inte tomma värden. Standardbeteendet fungerar bra för strukturerade data som i exemplet nedan.
I denna exempeltabell saknas poäng i vissa strängar. TEXTSPLIT-formeln med ignore_empty Om argumentet utelämnas eller sätts till FALSE hanteras detta fall perfekt genom att en tom cell skapas för varje tomt värde.
=TEXTSPLIT(A2, ", ")
Eller
=TEXTSPLIT(A2, ", ", FALSE)
Alla värden visas därför i de rätta kolumnerna.
Om dina strängar innehåller homogena data kan det vara motiverat att ignorera tomma värden. För detta kan du ställa in ignore_empty till TRUE eller 1.
Om du till exempel vill dela t nedanstående strängar och placera varje färdighet i en separat cell utan luckor är formeln följande:
=TEXTSPLIT(A2, ", ", ,TRUE)
I det här fallet ignoreras de saknade värdena mellan på varandra följande avgränsare helt och hållet:
Uppdelning av celler med eller utan hänsyn till storleken på storleken på de olika cellerna.
Använd det femte argumentet för att kontrollera om avgränsaren är skiftlägeskänslig, match_mode .
Som standard, match_mode sätts till 0, vilket gör att TEXTSPLIT Skiftlägeskänslig .
I det här exemplet är siffrorna separerade med små bokstäver "x" och stora bokstäver "X".
Formeln med standardkänslighet för stor- och små bokstäver accepterar endast det lilla "x" som avgränsare:
=TEXTSPLIT(A2, " x ")
Observera att avgränsaren har ett mellanslag på båda sidor av bokstaven " x " för att undvika inledande och avslutande mellanslag i resultaten.
Om du vill stänga av skiftlägeskänsligheten anger du 1 för match_mode för att tvinga TEXTSPLIT-formeln att ignorera bokstavsbokstäverna:
=TEXTSPLIT(A2, " x ", , ,1)
Nu delas alla strängar korrekt upp av båda avgränsarna:
Fyll på saknade värden i en 2D-matris
Det sista argumentet för TEXTSPLIT-funktionen, pad_with När en sådan sträng är uppdelad i både kolumner och rader returnerar Excel som standard #N/A-fel i stället för de saknade värdena för att inte störa strukturen i en tvådimensionell matris.
I nedanstående sträng finns det inget "=" ( col_delimiter ) efter "Score". För att bevara integriteten i den resulterande matrisen skriver TEXTSPLIT #N/A bredvid "Score".
För att göra resultatet mer användarvänligt kan du ersätta #N/A-felet med vilket värde som helst. Skriv helt enkelt det önskade värdet i fältet pad_with argument.
I vårt fall kan det vara ett bindestreck ("-"):
=TEXTSPLIT(A2, "=", ", ", ", , ,"-")
Eller en tom sträng (""):
=TEXTSPLIT(A2, "=", ", ", ", ", , ,"")
Nu när du har lärt dig hur varje argument i TEXTSPLIT-funktionen används i praktiken, ska vi diskutera några avancerade exempel som kan hjälpa dig att hantera icke-triviala utmaningar i dina Excel-kalkylblad.
Dela upp datum i dag, månad och år
För att dela upp ett datum i enskilda enheter måste du först konvertera datumet till text eftersom TEXTSPLIT-funktionen hanterar textsträngar medan Excel-datum är siffror.
Det enklaste sättet att konvertera ett numeriskt värde till text är att använda TEXT-funktionen. Se bara till att ange en lämplig formatkod för ditt datum.
I vårt fall är formeln följande:
=TEXT(A2, "m/d/yyyy")
Nästa steg är att inordna ovanstående funktion i det första argumentet för TEXTSPLIT och ange motsvarande avgränsare i det andra eller tredje argumentet, beroende på om du delar upp mellan kolumner eller rader. I det här exemplet avgränsas datumenheterna med snedstreck, så vi använder "/" för col_delimiter argument:
=TEXTSPLIT(TEXT(A2, "m/d/yyyy"), "/")
Dela celler och ta bort vissa tecken
Tänk dig detta: du har delat en lång sträng i bitar, men den resulterande matrisen innehåller fortfarande oönskade tecken, till exempel parenteser i skärmdumpen nedan:
=TEXTSPLIT(A2, " ", ", "; ")
Om du vill ta bort de inledande och avslutande parenteserna i taget, bäddar du in två SUBSTITUTE-funktioner i varandra (var och en ersätter en parentes med en tom sträng) och använder TEXTSPLIT-formeln för text argumentet för den inre SUBSTITUTE:
= SUBSTITUT(SUBSTITUT(TEXTSPLIT(A2, " " ", "; "), "(", ""), ")", "", "")
Tips: Om den slutliga matrisen innehåller för många extra tecken kan du rensa bort dem med hjälp av någon av de metoder som beskrivs i artikeln: Så här tar du bort oönskade tecken i Excel.
Dela strängar som hoppar över vissa värden
Antag att du vill dela upp nedanstående strängar i fyra kolumner: Förnamn , Efternamn , Resultat , och Resultat Problemet är att vissa strängar innehåller titeln "Mr." eller "Ms.", vilket gör att resultaten blir fel:
Lösningen är inte självklar men ganska enkel :)
Förutom de befintliga avgränsarna, som är ett mellanslag (" ") och ett kommatecken och ett mellanslag (", "), inkluderar du strängarna "Mr." och "Ms." i col_delimiter så att funktionen använder själva rubrikerna för att separera texten. För att ignorera tomma värden ställer man in ignore_empty argumentet till TRUE.
=TEXTSPLIT(A2, {" ",",", ", "Mr.", "Ms."}, ,TRUE)
Nu är resultatet helt perfekt!
TEXTSPLIT-alternativ
I Excel-versioner där TEXTSPLIT-funktionen inte stöds kan du dela upp strängar genom att använda olika kombinationer av funktionen Söka/söka med vänster, höger och mitten:
- Vid stor bokstavsoberoende SÖKNING eller stor bokstavsoberoende SÖKNING bestäms positionen för avgränsaren i en sträng, och
- Funktionerna LEFT, RIGHT och MID extraherar en delsträng före, efter eller mellan två instanser av avgränsaren.
I vårt fall ska man dela upp de värden som är separerade med ett kommatecken och ett mellanslag , formlerna lyder som följer.
För att extrahera namnet:
=VÄNSTER(A2, SEARCH(",", A2, 1) -1)
För att dra upp poängen:
=MID(A2, SEARCH(",", A2) + 2, SEARCH(",", A2, SEARCH(",",A2)+1) - SEARCH(",", A2) - 2)
För att få resultatet:
=RIGHT(A2, LEN(A2) - SEARCH(",", A2, SEARCH(",", A2) + 1)-1)
En detaljerad förklaring av formlarnas logik finns i Hur man delar upp strängar efter tecken eller mask.
Tänk på att till skillnad från funktionen TEXTSPLIT för dynamisk matris följer dessa formler den traditionella metoden med en formel i en cell: du anger formeln i den första cellen och drar den sedan nedåt i kolumnen för att kopiera den till cellerna nedanför.
Skärmbilden nedan visar resultatet:
Så här delar du celler i Excel 365 genom att använda TEXTSPLIT eller alternativa lösningar i tidigare versioner. Tack för att du läste och hoppas att vi ses på vår blogg nästa vecka!
Arbetsbok för övning för nedladdning
TEXTSPLIT-funktionen för att dela upp strängar - exempel på formler (.xlsx-fil)