Tekst ontleden [Excel VB]

Status
Niet open voor verdere reacties.

Juniorbunny

Nieuwe gebruiker
Lid geworden
8 mei 2007
Berichten
1
Na weken puzzelen heb ik het opgegeven.....

Ik krijg (als secretaris van mijn sportclub) regelmatig excellijsten binnen die netjes in mijn eigen administratie verwerkt moeten worden. Daarbij kom ik regelmatig de volgende twee problemen tegen: straat+huisnummer+woonplaats zitten in één cel of voorletters+achternaam zitten in één cel. Mijn eigen Access-db heeft aparte kolommen voor achternamen, voorletters, huisnummers etc. Vroeger zat ik uren alles handmatig te knippen, plakken en te exporteren.

Het heeft even geduurd, maar ik heb eindelijk een macro gevonden die mij verlost van het eerste probleem (kijken naar verschil tussen letters / cijfers). Maar het tweede probleem, daar zit ik nog steeds mee. Het vervelende is dat ik verschillende "soorten" opmaak krijg:
  • Voorletter [spatie] punt [spatie] Achternaam
  • Voorletter [spatie] Achternaam
  • punt [spatie] Voorletter [spatie] punt [spatie] Achternaam

Wie o wie kan mij hiermee verder helpen?
 
Ik ben pas sinds gisteren lid van dit forum, maar ik heb al zoveel geleerd!
Vooral op de website van Wigi staan veel tips en oplossingen.
Waaronder de formules om jouw probleem van de voorletters en achternaam op te lossen:

Onderstaande formule resulteert in alle tekens van cel A1 tot aan de eerste spatie (voorletters of voornaam):
=LINKS(A1;VIND.ALLES(" ";A1;1)-1)

Onderstaande formule resulteert in alle tekens vanaf de eerste spatie (achternaam):
=RECHTS(A1;LENGTE(A1)-VIND.ALLES(" ";A1;1))

Ik heb het zelf net pas ontdekt (en ga er veel plezier aan beleven!).
Ik hoop dat dit een deel van jouw problemen oplost.
Misschien dat iemand anders nog op- of aanmerkingen heeft, dan zie ik het wel. Daar kan ik dan ook weer van leren!
Succes!
 
Oh ja, in geval van tussenvoegsels levert de tweede formule een achternaam op die begint met een kleine letter. Dit heb ik nog niet op kunnen lossen.

Heeft iemand hier een oplossing voor?
 
Om te beginnen zou je met de replace functie het uitzicht van de verschillende mogelijkheden uniform kunnen maken.

voorbeeld: strNaam bevat de gegevens zoals je beschrijft.
Voorletter [spatie] punt [spatie] Achternaam
Voorletter [spatie] Achternaam
punt [spatie] Voorletter [spatie] punt [spatie] Achternaam

Code:
strNaam = Replace(strNaam, "[spatie].[spatie]", "[spatie]") ' maakt van [spatie][punt][spatie] => [spatie]
strNaam = Replace(strNaam, ".[spatie]", "[spatie]")  ' maakt van [punt][spatie] => [spatie]
While Instr(strNaam,"[spatie][spatie]") > 0 ' Zolang er dubbele spaties voorkomen in strNaam
  strNaam = Replace(strNaam, "[spatie][spatie]", "[spatie]")  ' vervang dubbele spatie door een enkele
Wend
strNaam = Trim(strNaam) ' verwijdert spaties vooraan EN achteraan strNaam
Uiteraard moet je de [spatie] vervangen door een ECHTE spatie... maar dat wist je al wel :D
Het resultaat voor jouw gegevens is dan altijd:
Code:
Voorletter[spatie]Achternaam
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan