
Generieke formule
=TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),MAX(1,FIND("@",SUBSTITUTE(A1," ",REPT(" ",99)))-50),99))
Samenvatting
Om een woord te extraheren dat specifieke tekst bevat, kunt u een formule gebruiken die is gebaseerd op verschillende functies, waaronder TRIM, LEFT, SUBSTITUTE, MID, MAX en REPT. U kunt deze formule gebruiken om zaken als e-mailadressen of andere subtekenreeksen met een unieke id te extraheren.
In het getoonde voorbeeld is de formule in C5:
=TRIM(MID(SUBSTITUTE(B5," ",REPT(" ",99)),MAX(1,FIND("@",SUBSTITUTE(B5," ",REPT(" ",99)))-50),99))
Uitleg
De kern: deze formule "overspoelt" de ruimte tussen woorden in een tekstreeks met een groot aantal spaties, zoekt en extraheert de betreffende substring, en gebruikt de TRIM-functie om de rommel op te ruimen.
Werkend van binnen naar buiten, wordt de originele tekst in B5 overspoeld met spaties met SUBSTITUTE:
SUBSTITUTE(B5," ",REPT(" ",99))
Dit vervangt elke afzonderlijke spatie door 99 spaties.
Opmerking: 99 is slechts een willekeurig getal dat staat voor het langste woord dat u moet extraheren.
Vervolgens lokaliseert de FIND-functie het specifieke teken (in dit geval "@") binnen de overstroomde tekst:
FIND("@",SUBSTITUTE(B5," ",REPT(" ",99)))-50
FIND geeft de positie van de "@" in deze tekst terug, waarvan 50 wordt afgetrokken. Het aftrekken van 50 "loopt terug" de positie naar ergens in het midden van de ruimtes voorafgaand aan de deelstring van belang. In het getoonde voorbeeld is de berekende positie 366.
De MAX-functie wordt gebruikt om het probleem van de subtekenreeks als eerste in de tekst aan te pakken. In dat geval is de positie negatief en wordt MAX gebruikt om te resetten naar 1.
Met een startpositie vastgesteld, wordt MID gebruikt om 99 tekens tekst te extraheren, beginnend bij 366 uit de tekst in B5, opnieuw overspoeld met ruimte:
MID(SUBSTITUTE(B5," ",REPT(" ",99)),366,99)
Dit extraheert de substring van belang, met veel spaties ervoor en erna.
Ten slotte wordt de TRIM-functie gebruikt om voorloop- en volgspaties bij te snijden, en retourneert de subtekenreeks die het speciale teken bevat.