Excel-formel: Få efternavn fra navn -

Indholdsfortegnelse

Generisk formel

=RIGHT(name,LEN(name)-FIND("*",SUBSTITUTE(name," ","*",LEN(name)-LEN(SUBSTITUTE(name," ","")))))

Resumé

Hvis du har brug for at udtrække efternavnet fra et fuldt navn, kan du gøre det med denne ret komplekse formel, der bruger flere funktioner. I den generiske form af formlen (ovenfor) er navnet et fuldt navn med et mellemrum, der adskiller fornavnet fra andre dele af navnet.

I eksemplet indeholder den aktive celle denne formel:

=RIGHT(B4,LEN(B4)-FIND("*",SUBSTITUTE(B4," ","*",LEN(B4)-LEN(SUBSTITUTE(B4," ","")))))

Forklaring

I kernen bruger denne formel RIGHT-funktionen til at udtrække tegn, der starter fra højre. De andre funktioner, der udgør den komplekse del af denne formel, gør bare en ting: de beregner, hvor mange tegn der skal ekstraheres.

På et højt niveau erstatter formlen det sidste mellemrum i navnet med en stjerne "*" og bruger derefter FIND til at bestemme placeringen af ​​stjernen i navnet. Positionen bruges til at finde ud af, hvor mange tegn der skal ekstraheres med RIGHT.

Hvordan erstatter funktionen kun det sidste mellemrum? Dette er den kloge del.

Spænd op, forklaringen bliver lidt teknisk.

De nøglen til denne formel er denne bit:

SUBSTITUTE(B4," ","*",LEN(B4)-LEN(SUBSTITUTE(B4," ","")))

Hvilket betyder den egentlige udskiftning af det sidste mellemrum med "*".

SUBSTITUTE har et fjerde (valgfrit) argument, der specificerer, hvilken "instans" af findteksten, der skal erstattes. Hvis der ikke leveres noget til dette argument, erstattes alle forekomster. Men hvis, fx tallet 2 leveres, erstattes kun den anden forekomst. I uddraget ovenfor beregnes instans ved hjælp af den anden SUBSTITUTE:

LEN(B4)-LEN(SUBSTITUTE(B4," ",""))

Her trækkes længden af ​​navnet uden mellemrum fra den faktiske længde på navnet. Hvis der kun er et mellemrum i navnet, producerer det 1. Hvis der er to mellemrum, er resultatet 2 osv.

I eksempelnavnet i B4 er der to mellemrum i navnet, så vi får:

15 - 13 = 2

Og to bruges som i instansnummeret:

SUBSTITUTE(B4," ","*",2)

som erstatter det andet mellemrum med "*". Navnet ser derefter sådan ud:

"Susan Ann * Chang"

FIND-funktionen overtager derefter for at finde ud af, hvor "*" er i navnet:

FIND("*", "Susan Ann*Chang")

Resultatet er 10 (* er i 10. position), der trækkes fra den samlede længde af navnet:

LEN(B4)-10

Da navnet er 15 tegn, har vi:

15-10 = 5

Nummeret 5 bruges af RIGHT som sådan:

=RIGHT(B4,5)

Hvilket resulterer i "Chang"

Som du kan se, er det meget arbejde ovenfor for at beregne den enkle 5!

Håndtering af inkonsekvente rum

Ekstra mellemrum vil forårsage problemer med denne formel. Én løsning er at bruge TRIM-funktionen først til at rydde op og derefter bruge parseringsformlen.

Interessante artikler...