• 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.

Bepaalde tekst uit cel selecteren & extraheren

Status
Niet open voor verdere reacties.

Colonel

Gebruiker
Lid geworden
24 apr 2013
Berichten
12
Goedemiddag allemaal,

Ik weet niet of ik deze vraag op de juiste plaats stel, aangezien het zowel via VBA, formule of (Power) Query kan worden opgelost.

Situatieschets: ik heb een view met een ODBC-koppeling van omzetten + afleveradres. In deze view staan postcodes met omzetten, zie ook onderstaand voorbeeld.

ALTE HEERSTRAßE / D-41540 DORMAGEN
ALTE HEERSTRAßE / TOR 10 / GERADE AUS BIS ZU ENDE D-41540 DORMAGEN / + M 75 STRAßE 1 AM TOR 5
ALTE HEERSTRAßE / D-41539 DORMAGEN

Uit deze gegevens wil ik enkel de Duitse postcodes selecteren (aanname dat deze beginnen met "D-", vervolgens wil ik de postcode naar een nieuwe kolom extraheren. Ik heb het geprobeerd door een query en criteria "D-"toe te kennen, maar dat selecteert enkel de Duitse postcodes, deze extraheert de postcodes nog niet naar een nieuwe kolom.

Stappenplan tot nu toe is:
1. Access gebruiken om database te koppelen aan Excel view/ODBC-koppeling
2. Duitse postcodes selecteren
3. Duitse postcodes extraheren naar nieuwe kolom

Wie kan mij hiermee helpen? Ik ben enigszins bekend met VBA, maar mijn (Power) Query kennis is beperkt.
 
Lijkt me een standaard "regular expressions" vraagstuk: 'D-' gevolgd door 5 cijfers is een redelijk eenvoudige match.

Regular expressions zijn via VBA redelijk makkelijk uit te voeren
Code:
Function RegExpGet(FindWhere, FindWhat As String, MatchNR As Integer)
    Dim RE As Object
    Dim MC As Object
    Dim M As Object

    Set RE = CreateObject("vbscript.regexp")
    RE.Pattern = FindWhat
    RE.Global = True
    Set MC = RE.Execute(FindWhere)
    If MC.Count Then
        Set M = MC(0)
        If MatchNR > M.submatches.Count Then
            RegExpGet = ""
        Else
            RegExpGet = M.submatches(MatchNR - 1)
        End If
    Else
        RegExpGet = ""
    End If
End Function

Dit is algemene functie. Voor jouw specifieke gebruik kun je de functie nog wat vereenvoudigen, omdat je altijd de eerste match wil en hetzelfde patroon.

patroon is: D-[0-9]{5}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan