Avatar billede goutanou Nybegynder
24. juni 2011 - 10:20 Der er 4 kommentarer og
1 løsning

VBA der skiller fornavn og navn

Hej
Jeg har et excel ark hvor fornavn og navn er slået sammen.
Hvordan opretter jeg en VBA der indesætte en mellemrum?
Fornavnet og navnet starter hele tiden med stort bogstaver.
Eks: AnneKarlsen
    PeterHansen
    JensJørgensen

På forhånd tak
Patrice
Avatar billede finb Ekspert
24. juni 2011 - 11:27 #1
Jeg har ikke lige Excel foran mig, men efter hukommelsen: Prøv dette:

dim navnekolonne as range
dim HeleNavnet as string
dim bogstavNR as integer
dim positionEfternavn as integer

for each celle in Navnekolonne
  for bogstavNR = 2 to len(celle)
    if isText(mid(celle, bogstavNR, 1) then
      positionEfternavn = bogstavNR
    endif

    'fornavnet:
    celle.offset(0,5)= left(HeleNavnet, positionEfternavn -1)

    'efternavnet:
    celle.offset(0,6)= right(HeleNavnet, len(heleNavnet)-positionEfternavn)

  next
next

mvh finb
Avatar billede finb Ekspert
24. juni 2011 - 11:29 #2
Rettelse: UCASE:

dim navnekolonne as range
dim HeleNavnet as string
dim bogstavNR as integer
dim positionEfternavn as integer

for each celle in Navnekolonne
  for bogstavNR = 2 to len(celle)
    if UCASE(mid(celle, bogstavNR, 1)= TRUE then
      positionEfternavn = bogstavNR
    endif

    'fornavnet:
    celle.offset(0,5)= left(HeleNavnet, positionEfternavn -1)

    'efternavnet:
    celle.offset(0,6)= right(HeleNavnet, len(heleNavnet)-positionEfternavn)

  next
next

mvh finb
Avatar billede goutanou Nybegynder
24. juni 2011 - 11:52 #3
Hej Finb

Tak. Det virker ikke helt det står: "Syntax error"
Mvh
P
Avatar billede goutanou Nybegynder
24. juni 2011 - 13:32 #4
Jeg har nu fundet ud af det:

Dim navnekolonne As Range
Dim celle As Range
Dim HeleNavnet As String
Dim bogstavNR As Integer
Dim positionEfternavn As Integer

Set navnekolonne = Selection

For Each celle In navnekolonne
    HeleNavnet = celle.Value
   
    For bogstavNR = 2 To Len(celle)
      Test = Mid(celle, bogstavNR, 1)
      If UCase(Test) = Test Then
        positionEfternavn = bogstavNR
        Exit For
      End If
    Next
    'fornavnet:
    celle.Offset(0, 5) = Left(HeleNavnet, positionEfternavn - 1)

    'efternavnet:
    celle.Offset(0, 6) = Right(HeleNavnet, Len(HeleNavnet) - positionEfternavn + 1)

 
Next

Tak for hjælpen :-)
Avatar billede finb Ekspert
25. juni 2011 - 10:16 #5
Det var så lidt, point modtages

Mvh finb
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