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:
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:
| Række | A | B | C |
|---|---|---|---|
| 1 | Postnr. og by | TEKSTFØR | TEKSTEFTER |
| 2 | 8000 Aarhus C | 8000 | Aarhus C |
| 3 | 2800 Kgs. Lyngby | 2800 | Kgs. Lyngby |
| 4 | 5000 Odense C | 5000 | ␣Odense C |
| 5 | ␣9000 Aalborg | 9000 Aalborg | |
| 6 | København K | København | K |
(␣ 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:
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:
-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:
| Række | D | E | F |
|---|---|---|---|
| 1 | Renset | Postnr. | By |
| 2 | 8000 Aarhus C | 8000 | Aarhus C |
| 3 | 2800 Kgs. Lyngby | 2800 | Kgs. Lyngby |
| 4 | 5000 Odense C | 5000 | Odense C |
| 5 | 9000 Aalborg | 9000 | Aalborg |
| 6 | København K | København K |
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:
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:
| Række | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Adresselinje | Vej og nummer | Postnr. og by | Postnr. | By |
| 2 | Solsikkevej 12, 8000 Aarhus C | Solsikkevej 12 | 8000 Aarhus C | 8000 | Aarhus C |
| 3 | Birkeallé 3, 1. tv., 2800 Kgs. Lyngby | Birkeallé 3, 1. tv. | 2800 Kgs. Lyngby | 2800 | Kgs. Lyngby |
| 4 | Engvej 7,5000 Odense C | Engvej 7 | 5000 Odense C | 5000 | Odense C |
| 5 | Havnegade 4 6000 Kolding | #I/T | #I/T | #I/T | #I/T |
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.
Navne: fornavne og efternavn
Med navne er problemet mellemnavne. Del ved det sidste mellemrum, så alt før er fornavne og det sidste ord er efternavnet:
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.
| Række | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Navn | Renset | Fornavne | Efternavn | Efternavn (ældre metode) |
| 2 | Anna Holm | Anna Holm | Anna | Holm | Holm |
| 3 | Karen Marie Lund | Karen Marie Lund | Karen Marie | Lund | Lund |
| 4 | Mads Bach | Mads Bach | Mads | Bach | Bach |
| 5 | Peter Emil Frost Nielsen | Peter Emil Frost Nielsen | Peter Emil Frost | Nielsen | Nielsen |
| 6 | Lise | Lise | Lise | #VÆRDI! |
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:
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:
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.