Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 11 van 11

Onderwerp: Meerdere woorden in een string vervangen (dynamisch)

  1. #1
    Giga Senior JVeer's avatar
    Geregistreerd
    27 februari 2019
    Vraag is niet opgelost

    Meerdere woorden in een string vervangen (dynamisch)

    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
    Bijgevoegde bestanden Bijgevoegde bestanden
    Laatst aangepast door JVeer : 15 januari 2022 om 00:32
    Gr,
    JV

  2. #2
    Mega Honourable Senior Member AlexCEL's avatar
    Geregistreerd
    3 april 2014
    Locatie
    Groningen
    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 (excel) voorbeeldbestandje zegt meer dan 1000 woorden --

  3. #3
    Giga Senior JVeer's avatar
    Geregistreerd
    27 februari 2019
    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😁

  4. #4
    Giga Honourable Senior Member
    Geregistreerd
    18 juli 2008
    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.
    ____________
    Met vriendelijke groet,
    Harry

    Lag nooit om de keuzes van dien vraauw, bist ter zulf aine van....
    (Grunnegs-Gronings)

  5. #5
    Giga Senior JVeer's avatar
    Geregistreerd
    27 februari 2019
    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!

  6. #6
    Giga Honourable Senior Member
    Geregistreerd
    18 juli 2008
    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.
    ____________
    Met vriendelijke groet,
    Harry

    Lag nooit om de keuzes van dien vraauw, bist ter zulf aine van....
    (Grunnegs-Gronings)

  7. #7
    Giga Senior JVeer's avatar
    Geregistreerd
    27 februari 2019
    Als het voor alleen jezelf is kun je ook een personal account overwegen, maar inderdaad, er zijn een hoop opties.

  8. #8
    Mega Honourable Senior Member AlexCEL's avatar
    Geregistreerd
    3 april 2014
    Locatie
    Groningen
    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.
    -- een (excel) voorbeeldbestandje zegt meer dan 1000 woorden --

  9. #9
    Giga Senior JVeer's avatar
    Geregistreerd
    27 februari 2019
    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 aangepast door JVeer : 15 januari 2022 om 21:08
    Gr,
    JV

  10. #10
    Giga Honourable Senior Member
    Verenigingslid
    snb's avatar
    Geregistreerd
    12 juni 2008
    @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 Code:
    1
    
    =F_snb(A1;D2:D6)
    VBA voor smarties
    VBA is een taal die je moet leren met een grammatica- en een woordenboek.

    http://www.helpmij.nl/forum/announcement.php?f=5
    Plaats svp geen bestanden op andere sites; nadat het bestand daar verwijderd is wordt een forumdraad onbegrijpelijk voor anderen.

  11. #11
    Giga Senior JVeer's avatar
    Geregistreerd
    27 februari 2019
    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
    Gr,
    JV

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren