08. januar 2008 - 13:06Der er
4 kommentarer og 1 løsning
Slitte celleværdi til flere celler
Hej
Jeg er ved at designe et ark, som kan indlæses i Outlook Mit problem er at Arket er bygget op således at "Navn" kun står i kollone A?
Nogle personer har "Fornavn" + "Efternavn" Andre har "Fornavn" + "Mellemnavn" + "Efternavn"
Kan man med en formel dele dette til 3 celler, således at b? altid er "Fornavn" C? altid er "Mellemnavn" hvis der ikke er et skal den være tom, og D? altid er "Efternavn"
Jeg har en vba løsning, men det er nok muligt at der findes en anden
i kolonne A skriver du =delnavn($A$4;1) i kolonne B skriver du =delnavn($A$4;2) i kolonne C skriver du =delnavn($A$4;3)
under makro ligger du denne kode:
Function delnavn(navn As String, nr As Integer) As String For t = 1 To Len(navn) navn1 = Left(navn, t) If Mid(navn, t, 1) = " " Then Exit For Next t Start = t
For t = Len(navn) To 1 Step -1 navn3 = Right(navn, Len(navn) - t) If Mid(navn, t, 1) = " " Then Exit For Next t slut = t
If Start <> slut Then navn2 = Mid(navn, Start, slut - Start) End If Select Case nr Case 1: delnavn = navn1 Case 2: delnavn = navn2 Case 3: delnavn = navn3 Case Else: delnavn = "?" End Select
Function delnavn(navn As String, nr As Integer) As String For t = 1 To Len(navn) navn1 = Left(navn, t) If Mid(navn, t, 1) = " " Then Exit For Next t Start = t
For t = Len(navn) To 1 Step -1 navn3 = Right(navn, Len(navn) - t) If Mid(navn, t, 1) = " " Then Exit For Next t slut = t
If slut = 0 Then navn3 = "" navn2 = "" End If
If Start <> slut And slut > 0 Then navn2 = Mid(navn, Start, slut - Start) End If
Select Case nr Case 1: delnavn = navn1 Case 2: delnavn = navn2 Case 3: delnavn = navn3 Case Else: delnavn = "?" End Select End Function
Her er en anden/pænere løsning, men resultatet er det samme :o)
Function delnavn2(navn As String, nr As Integer) As String delnavn2 = "" If navn = "" Or nr < 1 Or nr > 3 Then Exit Function navnsplit = Split(navn, " ")
If UBound(navnsplit) + 1 = 2 And nr = 2 Then ' byt mellemnavn og efternavn nr = 3 Else If UBound(navnsplit) + 1 = 2 And nr = 3 Then nr = 2 End If If nr <= UBound(navnsplit) + 1 Then delnavn2 = navnsplit(nr - 1)
End Function
Synes godt om
Ny brugerNybegynder
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.