Står postnummer og by i samme celle, kan du dele dem med to formler. TEKSTFØR (engelsk: TEXTBEFORE) tager det, der står før det første mellemrum, og TEKSTEFTER (engelsk: TEXTAFTER) tager resten:

B2 =TEKSTFØR(A2;" ")
Postnummer: alt før det første mellemrum.
C2 =TEKSTEFTER(A2;" ")
By: alt efter det første mellemrum, også når bynavnet selv har mellemrum.

Fordi begge funktioner kun kigger på det første mellemrum, bliver “8000 Aarhus C” til 8000 og Aarhus C, og “2800 Kgs. Lyngby” til 2800 og Kgs. Lyngby. Det virker, så længe listen er pæn. Det er importerede lister sjældent.

Hvor den enkle metode fejler

Vi har kørt de to formler på en liste med typiske fejl fra import og indtastning:

Arket Postnummer og by. Kolonne B og C er de enkle formler. Resultater som Excel viste dem.
Række ABC
1 Postnr. og by TEKSTFØR TEKSTEFTER
2 8000 Aarhus C8000Aarhus C
3 2800 Kgs. Lyngby2800Kgs. Lyngby
4 5000 Odense C5000␣Odense C
5 ␣9000 Aalborg9000 Aalborg
6 København KKøbenhavnK
Arket Postnummer og by. Kolonne B og C er de enkle formler. Resultater som Excel viste dem.

( markerer et mellemrum, som ellers ikke kan ses.)

  • Dobbelt mellemrum: “5000␣␣Odense C” gav byen “ Odense C” med et mellemrum foran. Den ser rigtig ud, men den matcher ikke “Odense C” i et opslag eller en pivottabel.
  • Mellemrum foran: “ 9000 Aalborg” gav et tomt postnummer, fordi det første mellemrum står helt forrest.
  • Manglende postnummer: “København K” blev til postnummeret “København” og byen “K”.

En robust formel til postnummer og by

Fjern først overflødige mellemrum med FJERN.OVERFLØDIGE.BLANKE (engelsk: TRIM). Den fjerner mellemrum foran og bagved og gør dobbelte mellemrum inde i teksten til enkelte:

D2 =FJERN.OVERFLØDIGE.BLANKE(A2)

Tjek derefter, om teksten faktisk begynder med et postnummer. Danske postnumre har fire cifre. Dataforsyningens almindelige postnummerliste havde 1.089 numre fra 1050 til 9990, da vi hentede den den 17. september 2026. Uden for den liste findes der også enkelte særlige postnumre, der begynder med 0, fx 0800 Høje Taastrup. Formlen kræver derfor bare fire tegn, der kan regnes som et tal, efterfulgt af et mellemrum:

E2 =HVIS(OG(ER.TAL(-VENSTRE(D2;4));MIDT(D2;5;1)=" ");VENSTRE(D2;4);"")
Postnummer, eller tom, hvis teksten ikke begynder med fire cifre og et mellemrum.

-VENSTRE(D2;4) forsøger at gøre de fire første tegn til et tal. For “Købe” giver det en fejl, og så svarer ER.TAL FALSK. Byen er resten af teksten, eller hele teksten, hvis der ikke var noget postnummer:

F2 =HVIS(E2="";D2;TEKSTEFTER(D2;" "))
Samme liste med den robuste metode (kolonne D til F).
Række DEF
1 Renset Postnr. By
2 8000 Aarhus C8000Aarhus C
3 2800 Kgs. Lyngby2800Kgs. Lyngby
4 5000 Odense C5000Odense C
5 9000 Aalborg9000Aalborg
6 København KKøbenhavn K
Samme liste med den robuste metode (kolonne D til F).

Nu står rækken uden postnummer med en tom postnummercelle, så du kan filtrere på den og rette dem i hånden. “0800 Høje Taastrup” gav postnummeret 0800 og byen Høje Taastrup, så nullet forrest bliver bevaret.

Skal postnummeret være tekst eller tal?

VENSTRE og TEKSTFØR giver altid tekst, også når resultatet er 8000. Behold som udgangspunkt postnummeret som tekst. =HVIS(E2="";"";VÆRDI(E2)) gav tallet 8000 for Aarhus, men for 0800 gav den 800, og så er nullet væk. Lav kun postnummeret om til tal, hvis den liste, du skal slå op i, har postnumrene som tal. Blander du tekst og tal, finder opslag ikke hinanden. Det er forklaret i guiden om tal gemt som tekst.

Hvorfor ikke TEKSTSPLIT?

TEKSTSPLIT (engelsk: TEXTSPLIT) deler ved hvert mellemrum. Det giver et forskelligt antal kolonner pr. række:

Tekst =TEKSTSPLIT(A2;" ") gav Antal kolonner
8000 Aarhus C 8000 | Aarhus | C 3
2800 Kgs. Lyngby 2800 | Kgs. | Lyngby 3
6000 Kolding 6000 | Kolding 2

Til postnummer og by er det forkert, fordi bynavnet bliver delt. Vil du have begge dele med én formel, der løber over i to kolonner, kan du sætte TEKSTFØR og TEKSTEFTER ved siden af hinanden:

B8 =VSTAK(TEKSTFØR(A8;" ");TEKSTEFTER(A8;" "))
Gav 8000 og Aarhus C i to celler ved siden af hinanden.

Læg mærke til navnet: VSTAK er HSTACK på dansk, ikke VSTACK. Se navne der driller.

Hele adresselinjen: del ved det sidste komma

Står vej, nummer, postnummer og by i én celle, er det sidste komma det sikreste skel. Et negativt forekomstnummer får TEKSTFØR og TEKSTEFTER til at tælle bagfra:

B2 =TEKSTFØR(A2;",";-1)
Vej og nummer: alt før det sidste komma.
C2 =FJERN.OVERFLØDIGE.BLANKE(TEKSTEFTER(A2;",";-1))
Postnummer og by: alt efter det sidste komma, uden mellemrum foran.
Arket Adresse. Kolonne D og E deler kolonne C videre med VENSTRE og TEKSTEFTER.
Række ABCDE
1 Adresselinje Vej og nummer Postnr. og by Postnr. By
2 Solsikkevej 12, 8000 Aarhus CSolsikkevej 128000 Aarhus C8000Aarhus C
3 Birkeallé 3, 1. tv., 2800 Kgs. LyngbyBirkeallé 3, 1. tv.2800 Kgs. Lyngby2800Kgs. Lyngby
4 Engvej 7,5000 Odense CEngvej 75000 Odense C5000Odense C
5 Havnegade 4 6000 Kolding#I/T#I/T#I/T#I/T
Arket Adresse. Kolonne D og E deler kolonne C videre med VENSTRE og TEKSTEFTER.

Adressen med etage og side (“1. tv.”) har to kommaer, og derfor er det sidste komma vigtigt. Linjen helt uden komma gav #I/T hele vejen. Det er faktisk nyttigt: fejlen viser dig de rækker, du skal se på. Vil du hellere have en tom celle, har begge funktioner et sjette argument til det, som vist i afsnittet om navne.

Med navne er problemet mellemnavne. Del ved det sidste mellemrum, så alt før er fornavne og det sidste ord er efternavnet:

C2 =TEKSTFØR(B2;" ";-1;;;B2)
Fornavne. Hvis der ikke er noget mellemrum, returneres hele navnet (sjette argument).
D2 =TEKSTEFTER(B2;" ";-1;;;"")
Efternavn. Tom, hvis der kun er ét navn.

Kolonne B er navnet renset med FJERN.OVERFLØDIGE.BLANKE. De tomme argumenter (;;;) springer over match-tilstand og match-slut, så du kan nå det sjette argument, der angiver, hvad der skal returneres, hvis skilletegnet ikke findes.

Arket Navne. Opdigtede navne.
Række ABCDE
1 Navn Renset Fornavne Efternavn Efternavn (ældre metode)
2 Anna HolmAnna HolmAnnaHolmHolm
3 Karen Marie LundKaren Marie LundKaren MarieLundLund
4 Mads BachMads BachMadsBachBach
5 Peter Emil Frost NielsenPeter Emil Frost NielsenPeter Emil FrostNielsenNielsen
6 LiseLiseLise#VÆRDI!
Arket Navne. Opdigtede navne.

Formlen kan ikke vide, om “Frost” er et mellemnavn eller en del af et dobbelt efternavn. Det kan kun den, der kender personen. Har du brug for det første fornavn alene, så brug =TEKSTFØR(B2;" ";1;;;B2), som gav “Peter”.

Ældre Excel: VENSTRE, FIND og MIDT

Har du ikke TEKSTFØR og TEKSTEFTER, kan du finde det første mellemrum med FIND og klippe med VENSTRE og MIDT:

G2 =VENSTRE(D2;FIND(" ";D2)-1)
Postnummer: tegnene før det første mellemrum.
H2 =MIDT(D2;FIND(" ";D2)+1;100)
By: op til 100 tegn efter det første mellemrum.

Brug dem på den rensede tekst i kolonne D. De gav de samme resultater som TEKSTFØR og TEKSTEFTER på alle rækker, også den forkerte opdeling af “København K” i “København” og “K”. Postnummerformlen i kolonne E bruger ikke de nye funktioner, så den kan du bruge som den er. I byformlen i kolonne F kan du erstatte TEKSTEFTER(D2;" ") med MIDT-formlen ovenfor.

Efternavnet efter det sidste mellemrum kræver et kendt kneb: erstat det sidste mellemrum med et tegn, der ikke findes i navnet, og find det tegn:

F2 =HØJRE(B2;LÆNGDE(B2)-FIND("#";UDSKIFT(B2;" ";"#";LÆNGDE(B2)-LÆNGDE(UDSKIFT(B2;" ";"")))))

LÆNGDE(B2)-LÆNGDE(UDSKIFT(B2;" ";"")) tæller mellemrummene, og UDSKIFT med det tal som fjerde argument ændrer kun det sidste. Formlen gav #VÆRDI! for “Lise”, som ikke har noget mellemrum. Pak den ind i HVIS.FEJL, hvis listen kan have enkeltnavne.