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

string selecteren links van een bepaald teken

Status
Niet open voor verdere reacties.

guidothys

Gebruiker
Lid geworden
7 aug 2016
Berichten
12
Ik wil graag e-mailadressen isoleren uit velden waarin ook een heleboel tekst staat.

De plaats van het e-mailadres is makkelijk te vinden met =vind.spec("@";a1)
De domeinnaam (van @ tot de eerstvolgende spatie) is te isoleren door =DEEL(O2;VIND.SPEC("@";O2);((VIND.SPEC(" ";O2;VIND.SPEC("@";O2)))-VIND.SPEC("@";O2)))
So far so good.

Maar hoe kan ik het stuk vóór de @ isoleren?
De functie LINKS kan de @ wel vinden maar telt niet terug. Met DEEL kun je evenmin terugtellen. Het enige wat ik kan verzinnen is op zoek te gaan naar een spatie vóór de @ met een hele serie ingebedde ALS-functies, maar dat is een haakjesfestijn zonder end.... :-)
Is er een simpelere manier? Het liefst zonder Visual Basic want dat gaat mijn pet(je) te boven...
Dank!
 
Geef eens een voorbeeld van zo'n stuk tekst in een cel.
 
Voorbeeld

Edmoor:

Op dit moment ben ik niet bereikbaar. Deze mail wordt niet doorgestuurd. Tijdens deze periode kan je terecht bij: Ron Jones: b.jacobs@gggro.nl of +31 6-15064234 Met vriendelijke groet, Antoine
(contactgegevens fictief)
 
Laatst bewerkt:
Dan is het advies zodra je weer bereikbaar bent, om die persoonlijke informatie z.s.m. uit je bericht te verwijderen.
 
Je kan net zo goed het hele bericht verwijderen. De gegevens zijn dus fictief en het hele bericht totaal niet van toepassing op je vraag of mijn reactie erop.
 
???

Edmoor, ik begrijp je reactie niet. Je vroeg een voorbeeld van een veld met tekst, inclusief een e-mailadres. Dat heb ik gepost. Wat is het probleem?
 
Edmoor, ik begrijp je reactie niet. Je vroeg een voorbeeld van een veld met tekst, inclusief een e-mailadres. Dat heb ik gepost. Wat is het probleem?

Haha! Dan heb ik de bedoeling van die tekst helemaal verkeerd opgevat!
Excuus :P
Ik ga er eens naar kijken :)

Die tekst staat in 1 cel?
 
Laatst bewerkt:
Zoiets?
Function in module
Formule in B
@Edmoor, ik had ook eerst zoiets van Euh:)
 

Bijlagen

Laatst bewerkt:
Of met deze functie:
Code:
=SPATIES.WISSEN(RECHTS(SUBSTITUEREN(LINKS(A1;VIND.ALLES(" ";A1 & " ";VIND.ALLES("@";A1))-1);" ";HERHALING(" ";LENGTE(A1)));LENGTE(A1)))

@Dotchie:
Wat VBA betreft had ik een iets kortere functie.
Code:
Function GetMailAddress(p1 As String) As String
    Dim i As Integer
    Dim stPos As Integer
    Dim enPos As Integer
    
    [COLOR="#008000"]'Bepaal de eerste spatie voor het @ teken[/COLOR]
    For i = InStr(1, p1, "@") To 1 Step -1
        If Mid(p1, i, 1) = " " Then
            stPos = i + 1
            Exit For
        End If
    Next i
    
    [COLOR="#008000"]'Bepaal de eerste spatie na het @ teken[/COLOR]
    For i = InStr(1, p1, "@") To Len(p1)
        If Mid(p1, i, 1) = " " Then
            enPos = i
            Exit For
        End If
    Next i
    
    [COLOR="#008000"]'Haal het gevonden gedeelte uit de string[/COLOR]
    GetMailAddress = Mid(p1, stPos, enPos - stPos)
End Function
 
Laatst bewerkt:
Volgens mij mag een E-mailadres geen spaties bevatten en dan zal dit als UDF ook wel voldoende zijn.

Code:
Function VenA(r As Range) As String
Dim j As Long
For j = 0 To UBound(Split(r))
    If InStr(1, Split(r)(j), "@") <> 0 Then
        VenA = Split(r)(j)
        Exit For
    End If
Next j
End Function
 
Laatst bewerkt:
Keurig! :thumb:
 
Declareer VenA 'as string' en dan kan onderstaande eruit.
Code:
If VenA = 0 Then VenA = ""
 
Bedankt voor de tip. Voor mijn doen had ik er al veel gedeclareerd.

De functie van edmoor in #11 is denk ik het antwoord op de vraag van de TS.
Het liefst zonder Visual Basic want dat gaat mijn pet(je) te boven...

Maar af en toe wat rommelen/verbeteren vinden we volgens mij allemaal wel leuk.:d
 
Of gebruik de VBA bibliotheek:

Code:
Function F_snb(c00)
  F_snb=join(filter(split(replace(join(filter(split(c00),"@")),"@"," @")),"@",0))
End Function
 
Laatst bewerkt:
En toen zaten we weer op 1 regeltje :P :thumb:
 
Hij is weer prachtig @snb.

edit: is het wel compleet?
Ik wil graag e-mailadressen isoleren

Maar desalniettemin :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan