Du har en kolumn med text som behöver ändras, och Excel erbjuder två funktioner som låter nästan likadana: ERSÄTT och BYT.UT. Vilken ska du välja? Skillnaden är enkel när man väl ser den. ERSÄTT byter tecken utifrån position, alltså var i texten de sitter. BYT.UT byter text utifrån innehåll, alltså vad det står, oavsett var det står.
I den här artikeln går vi igenom båda funktionerna med konkreta exempel, ställer dem mot varandra i vardagliga situationer och visar de fallgropar som brukar ställa till det. När du har läst klart ska du inte behöva gissa vilken textformel som passar ditt problem. Vill du först få en överblick över fler textfunktioner kan du börja med Effektiv texthantering i Excel.
Snabbsvar: ERSÄTT eller BYT.UT?
Om du bara vill ha svaret direkt: ERSÄTT byter ut ett visst antal tecken på en bestämd plats i texten. BYT.UT letar upp en viss text och byter den, var den än står. Tabellen visar skillnaderna sida vid sida.
| ERSÄTT | BYT.UT | |
|---|---|---|
| Engelskt namn | REPLACE |
SUBSTITUTE |
| Syntax | ERSÄTT(gammal_text; startposition; antal_tecken; ny_text) |
BYT.UT(text; gammal_text; ny_text; [antal_förekomster]) |
| Letar efter | En position, alltså vilket tecken bytet börjar på och hur många tecken som ska bort | Ett innehåll, alltså en exakt textsträng |
| Skiftlägeskänslig | Spelar ingen roll, eftersom funktionen inte söker efter text | Ja, ”ab” och ”AB” räknas som olika texter |
| Typexempel | =ERSÄTT(A2;10;4;"XXXX") maskerar de fyra sista siffrorna i ett personnummer |
=BYT.UT(A2;"AB";"Aktiebolag") skriver ut förkortningen i ett företagsnamn |
| Passar när | Texten har en fast struktur och du vet var bytet ska ske | Du vet vad som ska bort men inte var det står |
Två saker är bra att veta från början. I ERSÄTT är alla fyra argument obligatoriska. I BYT.UT är det fjärde argumentet valfritt. Utelämnar du det byts alla förekomster av texten. Båda funktionerna lämnar originalcellen orörd och returnerar resultatet som en ny text i cellen där formeln står.
ERSÄTT – byt tecken baserat på position
ERSÄTT bryr sig inte om vad som står i cellen. Funktionen räknar tecken från vänster och byter ut en bit som börjar på en viss position och är ett visst antal tecken lång. Den passar därför när texten har en fast struktur och du vet exakt var den del sitter som ska bytas.
Syntaxen är =ERSÄTT(gammal_text; startposition; antal_tecken; ny_text). Argumenten fungerar så här:
- gammal_text är texten eller cellen du utgår från, till exempel
A2. - startposition är numret på det första tecknet som ska bytas. Räkningen börjar på 1, och mellanslag, bindestreck och andra skiljetecken räknas också som tecken.
- antal_tecken anger hur många tecken från startpositionen som tas bort.
- ny_text är det som skrivs in på den lediga platsen. Den behöver inte vara lika lång som det du tar bort.
Exempel: maskera de fyra sista siffrorna i ett personnummer
Anta att du har personnummer i formatet ÅÅÅÅMMDD-NNNN och vill dölja de fyra sista siffrorna innan listan skickas vidare. Börja med att räkna positionerna. Tecken 1–8 är datumet, tecken 9 är bindestrecket och de fyra sista siffrorna ligger på position 10–13. Formeln blir därför:
=ERSÄTT(A2;10;4;"XXXX")
Excel börjar på tecken 10, tar bort 4 tecken och skriver in XXXX i stället. I exemplet nedan blir 19850312-4567 alltså 19850312-XXXX. Eftersom alla personnummer i kolumnen har samma struktur kan du kopiera formeln nedåt utan att ändra något.

Tänk på att formeln förutsätter att alla värden ser likadana ut. Står ett personnummer i formatet ÅÅMMDD-NNNN, med tvåsiffrigt år, hamnar bindestrecket på position 7 och formeln maskerar fel tecken. ERSÄTT kontrollerar aldrig vad den tar bort. Den gör bara precis det du ber om.
Infoga text utan att ta bort något
Om du sätter antal_tecken till 0 tas ingenting bort, och ny_text läggs in på startpositionen. Det är praktiskt när du ska lägga till ett tecken mitt i en text. Har du personnummer utan bindestreck, som 198503124567, kan du lägga in bindestrecket så här:
=ERSÄTT(A2;9;0;"-")
Bindestrecket hamnar på position 9 och resten av texten flyttas ett steg åt höger. Resultatet blir 19850312-4567.
BYT.UT – byt text baserat på innehåll
BYT.UT bryr sig inte om var texten sitter. Du anger vilken text som ska bort och vad den ska ersättas med, och Excel letar själv upp den i cellen. Det är precis det du behöver när samma ord eller förkortning kan stå först, sist eller mitt i en text.
Syntaxen är BYT.UT(text; gammal_text; ny_text; [antal_förekomster]):
- text: cellen eller texten du vill ändra i.
- gammal_text: den textsträng som ska bytas ut.
- ny_text: det som ska stå i stället. Ange
""om texten bara ska tas bort. - antal_förekomster: valfritt. Utelämnar du det byts alla förekomster.
Exempel: byt ”AB” mot ”Aktiebolag” i en kundlista
I exemplet nedan står förkortningen AB ibland sist i namnet och ibland först. Med ERSÄTT hade du behövt räkna fram en ny position för varje rad. Med BYT.UT räcker det med en enda formel som kopieras nedåt:
=BYT.UT(A2;"AB";"Aktiebolag")

Lägg märke till raden Kafé Solen. Där finns inget AB, och då lämnar BYT.UT texten orörd. Formeln ger alltså inget fel när den inte hittar något, utan returnerar bara originaltexten. Tänk också på att BYT.UT skiljer på versaler och gemener, så ”ab” skrivet med små bokstäver skulle inte ha bytts ut.
Det fjärde argumentet: byt bara en viss förekomst
Som standard byter BYT.UT ut varje förekomst av den gamla texten. Ibland vill du bara ändra en av dem, och då anger du numret på förekomsten som fjärde argument. Räkningen börjar från vänster.
=BYT.UT("Kontor-Lager-Butik";"-";" / ";2)
Formeln byter bara det andra bindestrecket och ger Kontor-Lager / Butik. Utan fjärde argumentet hade båda bindestrecken bytts, och resultatet hade blivit Kontor / Lager / Butik.
Vill du se BYT.UT användas på ett mer oväntat sätt? I Ökande bokstavsserie med BYT.UT används funktionen för att skapa en serie som A, B, C … med hjälp av en formel.
Praktiska skillnader i vardagen
Skillnaden blir tydligast när man ställer två vanliga städuppgifter bredvid varandra. I båda fallen ska en bit text bytas mot en annan, men det du vet om texten avgör vilken funktion som passar.
Fall 1: Artikelnummer med fast struktur – ERSÄTT
Anta att dina artikelnummer alltid följer mönstret SE-1234-A: två bokstäver för landet, ett bindestreck, fyra siffror, ett bindestreck och en variantbokstav. Nu ska prefixet bytas från SE till NO för en ny marknad.
Här vet du exakt var texten sitter. Prefixet är alltid tecken 1–2, oavsett vilka siffror som följer. Då räcker det med:
=ERSÄTT(A2;1;2;"NO")
Resultatet blir NO-1234-A. Formeln bryr sig inte om vad som faktiskt står i början. Den byter de två första tecknen, punkt slut. Det är just poängen när strukturen är fast. Du kan också byta variantbokstaven i slutet med =ERSÄTT(A2;9;1;"B"), eftersom den alltid står på position 9.
BYT.UT hade varit ett sämre val här. Det beror inte på att den inte fungerar, utan på att den letar efter innehåll. Om en artikel heter SE-2051-SE byter =BYT.UT(A2;"SE";"NO") båda förekomsterna, och då blir resultatet NO-2051-NO. När positionen är känd är ERSÄTT både säkrare och tydligare.
Fall 2: Kundnamn med förkortning – BYT.UT
Tänk dig i stället en kundlista där bolagsformen skrivits på olika sätt:
Bergs Bygg ABAB Svensk PlåtLindqvist Måleri AB Göteborg
Förkortningen AB ska skrivas ut som Aktiebolag, men den står i början, i slutet eller mitt i namnet. Namnen har dessutom olika längd, så det finns ingen position att räkna på. Däremot vet du precis vad som ska bort:
=BYT.UT(A2;"AB";"Aktiebolag")
Samma formel fungerar på alla tre raderna, eftersom BYT.UT söker efter texten var den än sitter. Att försöka lösa detta med ERSÄTT skulle kräva en ny startposition för varje rad.
Tumregeln
Det mesta kokar ner till en enda fråga: vad vet du om texten du vill byta?
| Du vet … | Använd | Exempel |
|---|---|---|
| var texten sitter (position och längd) | ERSÄTT | Prefix i artikelnummer, siffror i personnummer |
| vad texten är, men inte var | BYT.UT | Förkortningar i namn, ett visst tecken i fritext |
Vet du var texten sitter, använd ERSÄTT. Vet du vad som ska bort, använd BYT.UT.
Kombinera med andra textformler
ERSÄTT och BYT.UT gör sällan hela jobbet på egen hand. Oftast behövs en annan formel som räknar ut en position eller städar upp resultatet. Här är de kombinationer som kommer upp oftast.
ERSÄTT med HITTA eller SÖK när positionen varierar
ERSÄTT kräver en startposition och ett antal tecken. Om prefixet i ett artikelnummer ibland är två tecken (SE-1234-A) och ibland tre (SWE-1234-A) fungerar ett fast tal inte. Låt i stället HITTA leta upp det första bindestrecket:
=ERSÄTT(A2;1;HITTA("-";A2);"NO-")
HITTA returnerar bindestreckets position, alltså 3 för SE-1234-A och 4 för SWE-1234-A. Det talet används som antal_tecken, och därför byts allt till och med bindestrecket ut mot NO- oavsett hur långt prefixet är.
SÖK fungerar på samma sätt, med två skillnader. SÖK skiljer inte på stora och små bokstäver, och den klarar jokertecken som ? och *. HITTA är skiftlägeskänslig och tar inga jokertecken. Välj HITTA när du söker efter ett exakt tecken och SÖK när skiftläget kan variera.
BYT.UT i flera nivåer
BYT.UT byter bara en sorts text åt gången. Behöver du byta flera olika tecken kapslar du formlerna i varandra. Ett vanligt fall är att skapa e-postadresser utan å, ä och ö:
=BYT.UT(BYT.UT(BYT.UT(A2;"å";"a");"ä";"a");"ö";"o")
Den innersta BYT.UT körs först, och dess resultat skickas vidare utåt. Tänk på att formeln är skiftlägeskänslig, så Å, Ä och Ö behöver egna nivåer om namnen börjar med versal. Alternativet är att först göra om texten med GEMENER. Med fler än fyra eller fem nivåer blir formeln svår att läsa. Då är det ofta enklare att dela upp stegen i hjälpkolumner.
BYT.UT tillsammans med RENSA
RENSA (TRIM på engelska) tar bort mellanslag i början och slutet av en text och ersätter flera mellanslag i rad med ett enda. Funktionen passar bra efter en BYT.UT som tar bort ett ord. Om du stryker ”AB” ur Lindqvist Bygg AB blir ett mellanslag kvar på slutet. Det städas bort med:
=RENSA(BYT.UT(A2;"AB";""))
RENSA biter däremot inte på hårda mellanslag (teckenkod 160), som ofta följer med när man klistrar in text från webbsidor. Gör om dem till vanliga mellanslag först:
=RENSA(BYT.UT(A2;TECKENKOD(160);" "))
BYT.UT med TECKENKOD(10) för radbrytningar
En radbrytning i en cell, till exempel en som du skrivit med Alt+Enter, är tecknet med kod 10. Du kan inte skriva tecknet direkt i formeln, men TECKENKOD(10) ger dig det. Så här byter du radbrytningar mot mellanslag:
=RENSA(BYT.UT(A2;TECKENKOD(10);" "))
RENSA tar hand om dubbla mellanslag som kan bli kvar. Det fungerar också åt andra hållet. Formeln =BYT.UT(A2;", ";TECKENKOD(10)) lägger varje del av en kommaseparerad lista på en egen rad i cellen, men bara om Radbryt text är aktiverat för cellen. Text som exporterats från andra system kan dessutom innehålla TECKENKOD(13) före radbrytningen. Fler sådana fall och hur du hittar dem finns i Rensa bort radbrytningar och dolda tecken.
Ibland är det fel att byta ut tecknen, och texten bör i stället fördelas på flera celler. Ett exempel är en adress där gata, postnummer och ort står i samma cell. Då passar metoderna i Dela upp text i kolumner bättre.
Vanliga misstag och fallgropar
De flesta fel med ERSÄTT och BYT.UT ger inget felmeddelande. Formeln returnerar ett resultat, men inte det du tänkt dig. Här är fyra fällor som är bra att känna till och hur du undviker dem.
1. BYT.UT skiljer på stora och små bokstäver
BYT.UT är skiftlägeskänslig. Om du söker efter "ab" hittar formeln inte "AB", och texten lämnas orörd. Det märks lätt i kundlistor där samma förkortning är inskriven på olika sätt, till exempel AB, Ab och ab.
Det enklaste är att göra om hela texten till versaler först och sedan söka efter versalvarianten:
=BYT.UT(VERSALER(A2);"AB";"AKTIEBOLAG")
Nackdelen är att resten av texten också blir versaler. Om det inte går att godta kan du låta SÖK hitta positionen, eftersom SÖK inte skiljer på stora och små bokstäver, och låta ERSÄTT göra själva bytet:
=ERSÄTT(A2;SÖK("ab";A2);2;"Aktiebolag")
Den varianten byter bara den första träffen och ger #VÄRDEFEL! om texten saknas. Lägg den därför gärna i OMFEL om alla rader inte innehåller förkortningen.
2. Fel position i ERSÄTT
ERSÄTT gör exakt det du säger åt den, så en position som är fel med ett enda tecken förstör resultatet. Ett vanligt exempel är personnummer. Formeln =ERSÄTT(A2;10;4;"XXXX") förutsätter formatet ÅÅÅÅMMDD-NNNN. Saknas bindestrecket, eller är numret skrivet med tvåsiffrigt årtal, hamnar maskeringen på fel ställe.
Kontrollera strukturen innan du litar på en fast position:
=LÄNGD(A2)ska ge 13 för ÅÅÅÅMMDD-NNNN. Ett annat värde betyder att raden avviker.=HITTA("-";A2)ska ge 9 om bindestrecket sitter där det ska.
Tänk också på att inledande mellanslag flyttar alla positioner ett steg. Om data är inklistrat från ett annat system bör du städa det först.
3. Oavsiktliga träffar inne i andra ord
BYT.UT letar efter tecknen, inte efter hela ord. Om du byter "AB" mot "Aktiebolag" i ”ABC Bygg AB” blir resultatet ”AktiebolagC Bygg Aktiebolag”. Samma sak händer med alla korta förkortningar som kan finnas inuti andra ord eller namn.
Ett sätt att bara träffa hela ord är att söka med mellanslag runt förkortningen. För att även fånga ordet sist i texten lägger du till ett mellanslag i slutet och tar bort det igen med RENSA:
=RENSA(BYT.UT(A2&" ";" AB ";" Aktiebolag "))
Gör alltid en stickprovskontroll på resultatet, särskilt när söktexten bara är två eller tre tecken lång.
4. Resultatet blir alltid text
Både ERSÄTT och BYT.UT returnerar text, även när resultatet ser ut som ett tal. Om du tar bort prefixet i ”SE-1234” med =ERSÄTT(A2;1;3;"") får du ”1234” som text. Talet vänsterjusteras, SUMMA hoppar över det och letarformler hittar det inte när du söker efter talet 1234.
Gör om resultatet till ett riktigt tal med VÄRDE:
=VÄRDE(ERSÄTT(A2;1;3;""))
Det gäller även när du byter decimalpunkt mot decimalkomma i importerade belopp. =BYT.UT(A2;".";",") ger fortfarande text, så omslut formeln med VÄRDE om du ska räkna vidare med beloppen.
Sammanfattning och vidare läsning
ERSÄTT och BYT.UT gör samma sak i grunden: de byter ut en bit text mot en annan. Skillnaden ligger i hur du pekar ut vad som ska bytas. ERSÄTT utgår från positionen, alltså vilket tecken det börjar på och hur många tecken som ska bort. BYT.UT utgår från innehållet och letar upp en viss textsträng, var den än sitter i cellen.
Har texten en fast struktur, som personnummer, artikelnummer eller koder med samma längd, är ERSÄTT oftast det enklaste valet. Ska du rensa bort eller byta ett ord, en förkortning eller ett tecken som kan dyka upp var som helst, är BYT.UT rätt verktyg. Tänk på att BYT.UT skiljer på stora och små bokstäver och att båda funktionerna alltid returnerar text.
Vill du gå vidare med texthantering i Excel finns de här artiklarna:
- Effektiv texthantering i Excel ger en översikt över de viktigaste textformlerna och är en bra startpunkt.
- Rensa bort radbrytningar och dolda tecken visar hur du städar data från extra mellanslag och tecken som inte syns, ofta med hjälp av BYT.UT.
- Ökande bokstavsserie med BYT.UT är ett mer avancerat exempel på hur BYT.UT kan användas i praktiken.
- Dela upp text i kolumner beskriver hur du delar upp innehållet i en cell på flera kolumner när det inte räcker att bara byta ut delar av texten.
💡 Ytterligare läsning
Vill du fördjupa dig ytterligare i Excels inbyggda funktioner finns en jämförelse av tre uppslagsmetoder som visar hur du hittar värden i en tabell.