Avatar billede clyder Nybegynder
10. juni 2005 - 10:04 Der er 7 kommentarer

Opsplitning af celle i med fuldt navn i fornavn(e) og efternavn

Hej

Jeg har fået en "mindre" udfordring i et Excel-ark:

Jeg har et antal rækker der består af en kolonne med et medlemsnummer og en kolonne med medlemmets fulde navn.

For at importere oplysningerne til en ny software skal det fulde navn opsplittes i henholdsvis en kolonne med Fornavn(e) og en kolonne med Efternavn.

Hjælp..............
Avatar billede martin_moth Mester
10. juni 2005 - 11:52 #1
Nu skriver du ikke hvordan medlemmest fulde navn står - står det som
  Fornavn, Efternavn EventueltMellemnavn
  Fornavn Efternavn EventueltMellemnavn
eller?

Hvis der er flere efternavne eller fornavne, hvordan skal så deles op?

Det vigtige er blot at stille en regel op om HVOR der skal deles - ved første mellemfum, ved et komma, ved hvad?
Avatar billede clyder Nybegynder
10. juni 2005 - 12:50 #2
Kolonnen - Fuldt navn - ser således ud:
FULDT_NAVN
Peter Jensen
Peter Hansen
Peter Ulrik Jensen
Peter Stavbak-Jensen

Disse ønskes opdelt i 2 kolonner (celler) henholdsvis Fornavn(e) og Efternavn d.v.s

FORNAVN            EFTERNAVN
Peter              Jensen
Peter              Hansen
Peter Ulrik        Jensen
Peter              Stavbak-Jensen

Håber det kan klargøre udfordringen - metoden må være noget i retning af følgende:

Indlæs fuldt navn i string - find første mellemrum ved start af søgning fra højre mod ventre - put denne substring i feltet EFTERNAVN og resten i feltet FORNAVN, eller... ?
Avatar billede bak Forsker
11. juni 2005 - 11:31 #3
Marker de celler der skal splittes og kør denne makro
Der skriver fornavn og efternavn i cellerne til højre for.

Sub NameSplit()
Dim c As Range
  For Each c In Selection
      c(1, 2) = Mid(c, 1, InStrRev(c, " ") - 1)
      c(1, 3) = Mid(c, InStrRev(c, " ") + 1, 999)
  Next
End Sub
Avatar billede martin_moth Mester
11. juni 2005 - 15:50 #4
Yep - dit princip er helt rigtigt, og der er en funktion der kan netop det, at søge efter første forekomst af et specielt tegn i en string - nemlig InStrRev (læs om den i hjælpen)

Ellers kunen du kode den selv med en likke løkke, der læser et tegn ad gangen (med Mid()) fra ende til start, og stopper hvor det første mellemrum nås.

Var der komma mellem fornavn og efternavn, kunne du bruge split()-funktionen, og have komma som splittegn.

Men bak har jo svaret... :o)
Avatar billede martin_moth Mester
11. juni 2005 - 15:53 #5
bak:

Ville

c(1, 3) = RTrim(Mid(c, InStrRev(c, " ") + 1, 999)) være bedre end
c(1, 3) = Mid(c, InStrRev(c, " ") + 1, 999)?

Jeg mener, vil efternavnet altid fylde 999 tegn i ovenstående, eller finder VBA selv ud af at trimme de sidste mellemrum bort? - altså - er Rtrim overføldig?

Bare af almen nysgerrighed...
Avatar billede bak Forsker
11. juni 2005 - 17:11 #6
VBA er egentlig ligeglad med hvilket tal jeg sætter ind der. Den holder selv ved slutningen af strengen. Altså efternavnet kommer ikke til at fylde 999 tegn.
Hvis der er mellemrum efter efternavnet kommer disse også med.
Men din version ville nok være mere rigtig, og en rtrim er ikke nogen krævende opgave aF  maskinen :-)
Avatar billede martin_moth Mester
13. juni 2005 - 14:32 #7
lukketid?
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
Kategori
Kurser inden for grundlæggende programmering

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