Avatar billede L_Amtoft Mester
12. juni 2020 - 12:15 Der er 9 kommentarer og
1 løsning

navn deles i fornavn og efternavn

Hejsa
har lige haft en lille opgave. Vores marketingsafdeling havde et excelark hvor der i kolonne C står kundens navn. De ville så gerne have det delt op på fornavn i en kolonne og efternavn i en anden.
Det har jeg klaret - delvist, hvis jeg selv skal sige det.
=VENSTRE(C2;SØG(" ";C2;1))
=HØJRE(C2;LÆNGDE(C2)-SØG(" ";C2;1))

delvist, fordi
"Svend Åge Hansen" bliver til fornavn "Svend" og efternavn "Åge Hansen"

hvordan skal koden ser ud, for at få fornavn "Svend Åge" og efternavn "Hansen"
(jeg kan ikke knække, hvordan jeg søger efter første mellemrum fra højre og tager teksten derefter)
Avatar billede Daffodil Professor
12. juni 2020 - 12:24 #1
Måske du kan finde noget inspirationher:

https://www.computerworld.dk/eksperten/spm/1030018
Avatar billede Juul Forsker
12. juni 2020 - 12:25 #2
Du kan tilføje denne - den laver funktionen "find" bare bagfra.

Function FINDrev(Find_text As String, Within_text As String)
FINDrev = Len(Within_text) - Len(Find_text) - InStrRev(Within_text, Find_text) + 1
End Function
Avatar billede erikjacobsen Ekspert
12. juni 2020 - 13:46 #3
Svend Åge Hansen
Peter Hansen Jensen

Du kan ikke vide hvilken del af navnet, der er fornavn og hvilken del, der er efternavn.
Avatar billede Juul Forsker
12. juni 2020 - 13:58 #4
Man kan kun have ét efternavn. Dit eksempel er Hansen et mellemnavn, som vil indgå i fornavne

https://www.borger.dk/familie-og-boern/Navne-og-navneaendring/Navneregler
Avatar billede AnyFellow Seniormester
12. juni 2020 - 13:58 #5
Som det skrives i # 3, så kan du aldrig vide om der er tale om et fornavn eller mellemnavn.

Men for at gøre som du ønsker kan du bruge disse:
=VENSTRE(C2;SØG(" ";C2) -1)
=HØJRE(C2;LÆNGDE(C2)-SØG(" ";C2))
Avatar billede Jan K Ekspert
12. juni 2020 - 18:05 #6
Denne makro deler et navn i elementer
http://kronsell.net/DelNavn.htm
Avatar billede L_Amtoft Mester
15. juni 2020 - 11:29 #7
Tak for input.
Lige et par præciseringer:
1) jeg ønsker en formel, ikke en makro / vba (det kommer måske senere)
2) der er ét efternavn, resten er fornavn(e)

en løsning kunne være
først at opdele teksten i kolonner med [mellemrum] som adskiller
dernæst to formler
fornavn(e): =HVIS(L32="";J32;J32 &" " &K32)
efternavn: =HVIS(L32="";K32;L32)
er helt med på det er hverken simpelt eller optimalt
og havde jeg en person med 3 fornavne med i mit eksempel, skulle jeg have en 'HVIS' mere i fornavn(e)-formlen.


#2
har prøvet at oversætte din funktion til dansk, men kan ikke finde
FINDrev
InStrRev

#5
her får jeg stadig to efternavne
Avatar billede Juul Forsker
15. juni 2020 - 11:42 #8
Avatar billede AnyFellow Seniormester
15. juni 2020 - 12:18 #9
=VENSTRE(C2;FIND("*";UDSKIFT(C2;" ";"*";LÆNGDE(C2)-LÆNGDE(UDSKIFT(C2;" ";""))))-1)

=HØJRE(C2;LÆNGDE(C2)-FIND("*";UDSKIFT(C2;" ";"*";LÆNGDE(C2)-LÆNGDE(UDSKIFT(C2;" ";"")))))
Avatar billede L_Amtoft Mester
16. juni 2020 - 08:20 #10
#9 - det jeg søgte.
Jeg kan ikke gennemskue hvad det er den gør, men den gør at jeg får et resultat som er betydeligt bedre end mit første.

Tak til alle for input.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester