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

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

JEC.

Terugkerende gebruiker
Lid geworden
27 feb 2019
Berichten
4.608
Office versie
365
Hier een voorbeeld waarvan ik denk dat het handig kan zijn.

Stel je hebt een tekst in een cel staan en daarnaast heb je een tabel met woorden die uit die tekst gesubstitueerd moeten worden. Meestal wordt dit gedaan met VBA maar hoeft dus niet per se.
Je kan daarvoor deze formule gebruiken (office 365). Zie ook bijlage.

In de bijlage staan nu maar 5 waarden maar als dat er 50 zijn, ga je uiteraard niet 50 keer apart substitueren.

Code:
=LET(x;XML.FILTEREN("<x><y>"&SUBSTITUEREN(A1;" ";"</y><y>")&"</y></x>";"//y");TEKST.COMBINEREN(" ";1;FILTER(x;ISFOUT(VERGELIJKEN(x;XML.FILTEREN("<x><y>"&SUBSTITUEREN(TEKST.COMBINEREN(" ";1;D2:D6);" ";"</y><y>")&"</y></x>";"//y");0));"")))

Hopelijk heeft iemand er iets aan
 

Bijlagen

Laatst bewerkt:
Je kan ook in de nieuwste versies van Excel in de naammanager de volgende LAMBDA functie aanmaken (met naam MeerVervangen):
Code:
=LAMBDA(tekst;oud;ALS(oud<>"";MeerVervangen(SUBSTITUEREN(tekst;oud;"");VERSCHUIVING(oud;1;0));tekst))
En deze daarna aanroepen in een willekeurige cel met de functie:
Code:
=MeerVervangen(A1;D2)
Voor hetzelfde resultaat.
 
Een mooie! Had deze graag willen testen Die manier zou ook betrouwbaarder zijn, omdat de tekst niet gesplit wordt. Het wordt tijd dat ze de nieuwe functies voor iedereen vrijgeven
 
Klopt JVeer.

Ik was bezig met een laptop i.p.v. de Pc. (ligt maar eerst wee in de ijskast).

Het probleem is dat ik niet eens weet welk versie van Excel het geschiktst is.
Te veel soorten en dan nog de 32 of 64 bits versie.
 
Ik zou ten minste de 365 of 2021 versie nemen.
Die dynamische matrix functies voegen zo veel toe en maakt het ook leuk om mee te werken!
 
Een van die twee zou het moeten worden, maar dan nog de verschillen: "Home and Student", "Home and Business", "Professional Plus" en noem maar op.
 
Als het voor alleen jezelf is kun je ook een personal account overwegen, maar inderdaad, er zijn een hoop opties.
 
Ik heb een Office 365 personal account naar volle tevredenheid en kosten vind ik te overzien (69 eur/jr). De 1TB Onedrive is ook erg gemakkelijk. Kan office op 5 apparaten installeren.
 
Op een of andere manier betaal ik niets voor office 365.
Na m'n opleiding kon ik gebruik blijven maken van het studenten office pakket. Vervolgens ingelogd op mijn eigen emailadres en het blijkt nog steeds te werken, gratis.
Heel raar, zou niet weten hoe het allemaal in elkaar steekt op de achtergrond...zo zie je maar, bij microsoft hebben ze ook niet alles op de rit.
 
Laatst bewerkt:
@JVeer

Begrijp ik je goed, dat jouw formule hetzelfde resultaat geeft als:

Code:
Function F_snb(c00, sn)
   F_snb = c00
   For Each it In sn
      F_snb = Replace(F_snb, it, "")
    Next
End Function

PHP:
=F_snb(A1;D2:D6)
 
Ja precies, en die van Alex is nog beter. Een recursieve Lambda functie.

Ik kwam vorige week op onderstaande uit, waarna ik me sterk afvroeg of dit niet gewoon met een formule kon.

Code:
Function jec(cell As String) As String
 With CreateObject("VBScript.RegExp")
   .Global = True
   .Pattern = Join(Application.Transpose(Range("D2", Range("D" & Rows.Count).End(xlUp))), "|")
   jec = Application.trim(.Replace(cell, ""))
 End With
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan