Hoi Hovawart,
Je probleem is ingewikkelder dan je zou denken en daarom niet op te lossen met Excel. Het verwijderen van voorvoegsels, zoals mevr. en de heer is geen probleem, maar die tussenvoegsels en dubbele achternamen.
Hoe moet Excel weten dat de invoer wel of niet een voornaam bevat (vergelijk Annie de Rooij met van der Steen, de een moet A. de Rooij worden en de ander van der Steen).
De onderstaande functie schrapt in ieder geval de bekendere voorvoegsels en kort de eerste naam af tot een Initiaal met een punt.
Function Achternaam(Naam)
k = 0
'mogelijke voorvoegsels van groot naar klein!
If Mid(LCase(Naam), 1, 7) = "mevrouw" Or Mid(LCase(Naam), 1, 7) = "de heer" Then Naam = Mid(Naam, 8, 99)
If Mid(LCase(Naam), 1, 5) = "mevr." Then Naam = Mid(Naam, 6, 99)
If Mid(LCase(Naam), 1, 4) = "mevr" Or Mid(LCase(Naam), 1, 4) = "heer" Then Naam = Mid(Naam, 5, 99)
If Mid(LCase(Naam), 1, 3) = "mw." Or Mid(LCase(Naam), 1, 3) = "mvr" Or Mid(LCase(Naam), 1, 3) = "hr." Then Naam = Mid(Naam, 4, 99)
If Mid(LCase(Naam), 1, 2) = "mw" Or Mid(LCase(Naam), 1, 2) = "hr" Then Naam = Mid(Naam, 3, 99)
If Mid(Naam, 1, 1) = " " Then Naam = Mid(Naam, 2, 99)
Lengte = Len(Naam)
For i = 1 To Len(Naam)
Kar = Mid(Naam, i, 1)
If Kar = " " And k = 0 Then
Achternaam = Achternaam & Mid(Naam1, 1, 1) & ". ": Naam1 = "": k = 1
Else
Naam1 = Naam1 & Kar
End If
Next i
Achternaam = Achternaam & Naam1
End Function
Een functie moet niet in de VBA-editor gezet worden maar in een module (rechtermuisknop klikken op het tabje van het werkblad, programmacode weergeven kiezen, uit het menu van VBA Invoegen-> Module en de functie inkopieren)
Zet nu in A1: Mw. Annie de Rooij
en in B1: =Achternaam(A1)
En zie het resultaat.
Waar het fout gaat is bij Mw. de Rooij, hier wordt d. Rooij van gemaakt.
Jeroen
P.S. Eric,
Meer over de Hovawart:
http://www.hovawartclub.nl/