• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Straat en huisnummer van elkaar scheiden

  • Onderwerp starter Onderwerp starter marka
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

marka

Gebruiker
Lid geworden
14 jul 2009
Berichten
333
Hallo,

Ik heb het volgende probleem.

Ik heb nu 1 veld met data waarin zowel een straat als huisnummer staat.

Ik geef hieronder enkele voorbeelden van diverse formats.

1 Avenue Ambroise Thomas
Dieter Hümmer e.K. Frau Vollmuth Luitpoldstraße 20
Herborner Strasse 29a
Herborner Strasse 1-5

Doel is in 1 kolom de straatnaam en in de andere het huisnummer.

Verder kan er ook nog een contactpersoon in het adresveld staan.

Waneer er Herr of Frau in het midden van het veld wordt gevonden, dan zou er een melding in de vorm van bijvoorbeeld een "1" in een kolom geplaatst moeten worden. Dan is het een foutief adres.

Wanneer er in het begin Herr staat, dan zou het volgende moeten gebeuren.

Herr Henk Vlist Hoofdstraat 5

t/m vlist in een kolom (ga er maar vanuit dat er altijd een voor en achternaam staat) en vervolgens straatnaam, huisnummer
 
stel: alle gegevens staan aaneengesloten in kolom A

Code:
Sub tst()
  sq=sheets(1).[A1].currentregion.resize(,4)
  for j=1 to ubound(sq)
      sp=split(sq(j,1))
     if instr(sq(j,1),"Herr")>0 or instr(sq(j,1),"Frau")>0 Then
       sq(j,2)="fout"
     Elseif val(sp(0)) >0 then
       sq(j,4)= sp(0)
       sq(j,3)= mid(sq(j),len(sp(0))+1) 
    elseif val(sp(ubound(sp)))>0 then
        sq(j,4)=sp(ubound(sp))
        if left(sq(j,1),4)="Herr" Then
           sq(j,3)=sp(ubound(sp)-1)
           sq(j,2)=left(sq(j,1),len(sq(j,1))-(len(sp(ubound(sp)))+len(sp(ubound(sp)-1))+1))
        end if
    elseif val(sp(ubound(sp)-1))>0 then
        sq(j,4)=sp(ubound(sp)-1)
        if left(sq(j,1),4)="Herr" Then
           sq(j,3)=sp(ubound(sp)-2)
           sq(j,2)=left(sq(j,1),len(sq(j,1))-(len(sp(ubound(sp)))+len(sp(ubound(sp)-1))+ len(sp(ubound(sp)-2)) +2))
        end if
    end if
  next
  sheets(1).[A1].currentregion.resize(,4)=sq
End Sub
 
Moet ik dan iets neerzetten in kolom B, want hij draait nu niet?
 
Hij draait, maar ik krijg het subscript valt buiten bereik?
 
Wat is de waarde van j op dat moment? En andere variabelen / arrays?
 
Ik weet eigenlijk helemaal niets van vb, dus wat is j precies?
 
Dan raad ik het u niet aan om zulke codes te gebruiken. Zelfs voor iemand met gemiddelde VBA kennis is deze code niet makkelijk te lezen en te onderhouden.

Data > Text to columns is een mogelijkheid om dit meer "manueel" te gaan doen.
 
Ja ik had al zo'n vermoeden, dan zit er helaas niets anders op denk ik.
 
Je kan meer dan waarschijnlijk uit de brand geholpen worden door de code van Snb lichtjes aan te passen / de brondata aan te passen, maar vanaf dat de volgende keer weer iets mis loopt zit je opnieuw met problemen. Dit soort problemen komt zeer vaak voor op forums (splitsen van adressen, namen met aanspreektitels, e.d.) en er is geen enkele volledig bevredigende oplossing. Tenzij de brondata goed georganiseerd is.

Wigi
 
Hallo Marka,

Als je jouw probleem handmatig moet oplossen dan zijn er mogelijk een paar formules te vinden op de navolgende pagina:
http://members.chello.nl/g.hendriksen/roostervb.htm
Je moet dan kijken in het verhaal onder 20-1-09. Als je de vaste waardes in de formules voor splitsing op een andere dan da laatse spatie in de tekst, vervangt door een verwijzing naar een cel met daarin het getal kun je redelijk snel en gemakkelijk, met een aantal hulpkolommen de splitsing handmatig uitvoeren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan