19. november 2010 - 15:30Der 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
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
@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)
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....
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).
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.