Avatar billede spanking Nybegynder
19. november 2010 - 15:30 Der er 6 kommentarer og
1 løsning

Hjælp til opdeling af navn i kollonne

Hej alle :-)

Jeg har følgende formel, som jeg har brugt til følgende:

"
Arket består af 2 kolonner - D samt E.

Det er sådan, at der i kolonne D skal stå fornavn og i kolonne E, skal der stå efternavn. Problemet er bare, at hele navnet står i kolonne D. Derfor skal efternavnet altså rykkes over i kolonne E, og fornavnet skal blive stående i Kolonne D. Er er nogen, der ved, hvordan det gøres smartest, altså så det ikke skal rettes manuelt ?

"

Nu er det sådan, at formlen ikke tager hensyn til de celler, hvor der foreksempel kun står et navn eller hvis der ikke står noget, så laver den en fejl. Kan man tilføje noget i formlen, så den ignorer, hvis der f.eks. kun står et fornavn ?

Public Sub SplitNavn()
    Dim startRow As Integer
    Dim endRow As Integer
    Dim sheetName As String
    Dim r As Range
    Dim i As Integer
    Dim fullName As String
    Dim splitPos As Integer
   
    startRow = 1
    endRow = 3
    sheetName = "Sheet1"
   
    For i = startRow To endRow
        Set r = Worksheets(sheetName).Cells(i, 4)
        fullName = r.Value
        splitPos = InStrRev(fullName, " ")
        r.Value = Left(fullName, splitPos - 1)
        r.Offset(0, 1).Value = Mid(fullName, splitPos + 1)
    Next i
End Sub
Avatar billede supertekst Ekspert
19. november 2010 - 23:09 #1
Public Sub SplitNavn()
    Dim startRow As Integer
    Dim endRow As Integer
    Dim sheetName As String
    Dim r As Range
    Dim i As Integer, f As Integer
    Dim fullName As String
    Dim splitPos As Integer
   
    startRow = 1
    endRow = 3
    sheetName = "Sheet1"
   
    For i = startRow To endRow
        Set r = Worksheets(sheetName).Cells(i, 4)
        fullName = r.Value
       
        For f = Len(fullName) To 1 Step -1
            If Mid(fullName, f, 1) = " " Then
                r.Offset(0, 1) = Mid(fullName, f + 1)
                r.Value = Left(fullName, f - 1)
                Exit For
            End If
        Next f
     
    Next i
End Sub
Avatar billede dego Novice
20. november 2010 - 00:39 #2
Hvad med funktionen under Data - Tekst til kolonner.
Den ignorerer tomme celler og fornavne der står alene og så tager det kun 10 sekunder?
Avatar billede anlu Nybegynder
20. november 2010 - 00:45 #3
@dego: Tekst til kolonner vil splitte teksten i for mange kolonner hvis man har flere end 2 navne.

Superteksts løsning ser ud til at give det ønskede resultat, men bare for at vise hvordan du umiddelbart kan tilpasse den oprindelige løsning, så kommer der lige et alternativt forslag her. Det er dybest set bare at checke på om splitPos er positiv:

Public Sub SplitNavn()
    Dim startRow As Integer
    Dim endRow As Integer
    Dim sheetName As String
    Dim r As Range
    Dim i As Integer
    Dim fullName As String
    Dim splitPos As Integer
   
    startRow = 1
    endRow = 3
    sheetName = "Sheet1"
   
    For i = startRow To endRow
        Set r = Worksheets(sheetName).Cells(i, 4)
        fullName = r.Value
        splitPos = InStrRev(fullName, " ")
        If splitPos > 0 Then
            r.Value = Left(fullName, splitPos - 1)
            r.Offset(0, 1).Value = Mid(fullName, splitPos + 1)
        End If
    Next i
End Sub

Giv blot pointene til supertekst som var først :o)
Avatar billede dego Novice
20. november 2010 - 02:23 #4
Øv, nu øjnede jeg lige chancen for at fordoble min pointscore....
Avatar billede spanking Nybegynder
21. november 2010 - 14:54 #5
Tusind tak begge to :-)

Tænkte på, om der var et eller andet sted på nette, hvor man kan finde en masse af overstående formularer ? Eller et sted, hvor man kan lære det eventuelt ? Jeg sidder nemlig generelt med utroligt mange excel ark med op til 30.000 rækker, som ofte står meget roddet....
Avatar billede anlu Nybegynder
21. november 2010 - 15:04 #6
Når jeg sidder med noget jeg skal have lidt hjælp til plejer jeg at starte med at søge i Excel's egen hjælp (fra VBA-editoren hvis det handler om VBA), dernæst er google min ven.

En anden måde at få lidt hints på kan være at optage en makro og se hvordan koden ser ud - som regel er det ikke specielt køn kode, men man kan få en ide om nogle strukturer og funktioner.

Hvis du starter fra bar bund er det måske en ide at ofre et par hundredelapper på en bog, der kan føre dig igennem? Der kan jeg dog ikke umiddelbart give nogen anbefalinger - selv om jeg bruger bøger en del, så har det ikke været nødvendigt mht. VBA (da jeg havde erfaring med alm. VB6 inden jeg begyndte på VBA).
Avatar billede supertekst Ekspert
22. november 2010 - 23:06 #7
husk venligst at lukke dette spørgsmål..
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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