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

Meerdere woorden in een string vervangen (dynamisch) DEEL 2

Status
Niet open voor verdere reacties.

JEC.

Terugkerende gebruiker
Lid geworden
27 feb 2019
Berichten
4.336
Office versie
365
Hi allen,

Dit is een vervolg op dit draadje: https://www.helpmij.nl/forum/showth...e-woorden-in-een-string-vervangen-(dynamisch)

Het ging hier om het dynamisch vervangen van woorden in een string. Ik zal nu verder aanhaken op de recursieve lambda methode -- > LET/recursive LAMBDA
Met behulp van de LET functie kun je de Lambda recursief aanroepen, zonder de functie aan te maken in de name manager.

Code:
=LET(R;LAMBDA(R;X;Y;IF(Y<>"";R(R;TRIM(SUBSTITUTE(X;Y;""));OFFSET(Y;1;0));X));R(R;A1;D2))
 

Bijlagen

  • Meerdere woorden tegelijk in string vervangen.xlsx
    12,1 KB · Weergaven: 17
Hier een variant met REDUCE.

Code:
=LET(x;D2:E6;REDUCE(A2;INDEX(x;;1);LAMBDA(a;b;SUBSTITUTE(a;b;VLOOKUP(b;x;2;0)))))
 
Voor de gein nog een optie:
Code:
=LET(s;TEKST.SPLITSEN(A1;" ");TEKST.COMBINEREN(" ";1;FILTER(s;BYCOL(--ISGETAL(VIND.SPEC(s;D2:D6));LAMBDA(x;MAX(x)))=0)))
 
In dezelfde lijn een simpele UDF

PHP:
=F_snb(A1;D2:D6)

Code:
Function F_snb(it1, sn)
   F_snb = it1

   For Each it In sn
     F_snb = Replace(F_snb, it, "")
   Next

   F_snb = Application.Trim(F_snb)
End Function
 
Deze stond ook in het vorige draadje. Het mooie is dat je dit nu ook met formules kunt doen met als het ware een loop. Vandaar de post.

Excel gebruikt al je processor kernen. VBA maar één.
 
Ook een duit.
Code:
=REDUCE(A1&" ";D2:D6&" ";LAMBDA(a;b;SUBSTITUEREN(a;b;"")))
 
Laatst bewerkt:
Snap ik.
Maar fraai vind ik het niet; alsof je alle VBAregels aan elkaar plakt.

Die snelheid speelt geen rol, want niet waarneembaar.
De meeste van mijn VBA-oplossingen zijn vele malen sneller dan de verwerking van vele Excelformules.
Snelheid heeft niet alleen te maken met de verwerking van de opdracht, maar ook met de struktuur van gegevens en de struktuur en onderdelen van je code.
 
Nadeel van deze excel lambda formules vind ik nog altijd dat evalueren niet mogelijk is. Je ziet niet wat er gebeurt.
Ouderwetse matrix formules kan je ook niet evalueren, ook als je de cel rechtsonder evalueert krijg je toch altijd de berekening van de cel linksboven.
Je moet dus de vertaalslag in je hoofd weten te maken.
 
Klopt inderdaad. Maar door de aanwezigheid van variabelen in let/lambda kun je ook met F9 niet gemakkelijk evalueren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan