REGEXEXTRACT
REGEXEXTRACT in Engelstalige Excel
Haal het deel uit een tekst dat bij een patroon past, zoals een factuurnummer uit een bankomschrijving.
Laatst bijgewerkt: 23 oktober 2026
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Datum | Omschrijving | Bedrag | Factuurnr. |
| 2 | 05-01-2026 | SEPA Overboeking Bakker Metaal BV INV-250871 dank u | €4,235.50€ 4.235,50 | INV-250871=REGEXEXTRACT(B2, "INV-[0-9]{6}")=REGEXEXTRACT(B2; "INV-[0-9]{6}") |
| 3 | 06-01-2026 | iDEAL Kroon Bouw betaling INV-250902 en INV-250903 | €12,100.25€ 12.100,25 | INV-250902=REGEXEXTRACT(B3, "INV-[0-9]{6}")=REGEXEXTRACT(B3; "INV-[0-9]{6}") |
| 4 | 07-01-2026 | Betaling Smit Handel factuur INV-251004 restant | €980.00€ 980,00 | INV-251004=REGEXEXTRACT(B4, "INV-[0-9]{6}")=REGEXEXTRACT(B4; "INV-[0-9]{6}") |
Veeg opzij om alle kolommen te zien
Resultaat: INV-250871
=REGEXEXTRACT(B2,"INV-[0-9]{6}")
=REGEXEXTRACT(B2;"INV-[0-9]{6}")
Wat REGEXEXTRACT doet en wanneer je het gebruikt
Wat het doet: REGEXEXTRACT geeft het deel van een tekst terug dat bij een patroon past, bijvoorbeeld het factuurnummer in een bankomschrijving. Het patroon is een reguliere expressie. REGEXEXTRACT, REGEXTEST en REGEXREPLACE zijn functies van Microsoft 365, dus oudere Excel-versies tonen #NAAM?.
Wat het vervangt: ketens van DEEL, VIND.ALLES en LENGTE die niet meer werken zodra de tekst vóór het nummer een andere lengte krijgt.
Waarvoor je de functie gebruikt
Situaties waarin je REGEXEXTRACT inzet:
- een verwijzing staat ergens midden in vrije tekst, zoals een bankomschrijving of de toelichting bij een journaalpost
- een code heeft een vaste vorm (letters, daarna cijfers) maar een wisselende plaats
- één tekst bevat meerdere verwijzingen en je wilt ze allemaal
Is de tekst netjes gescheiden door één scheidingsteken, dan zijn TEKST.VOOR, TEKST.NA of TEKST.SPLITSEN korter en heb je geen patroon nodig.
REGEXEXTRACT of DEEL en VIND.ALLES?
Vergelijk met DEEL
- DEEL en VIND.ALLES: je telt de tekens
=DEEL(B2,
VIND.ALLES("INV-", B2), 10) =DEEL(B2;
VIND.ALLES("INV-"; B2); 10) DEEL MIDTekens uit het midden van een tekst, op startpositie en lengte.Lees meer over DEELDruk op Escape om te sluitentekstDe tekst waaruit je een stuk haalt; meestal een celverwijzing.Druk op Escape om te sluitenVIND.ALLES FINDDe positie van een tekst in een andere, hoofdlettergevoelig.Lees meer over VIND.ALLESDruk op Escape om te sluitenzoeken_tekstDe tekst waarnaar je zoekt. Hoofdletters tellen; * en ? zijn gewone tekens.Druk op Escape om te sluitenin_tekstDe tekst waarin je zoekt; meestal een celverwijzing.Druk op Escape om te sluitenaantal_tekensHoeveel tekens je neemt. Meer dan er over zijn mag.Druk op Escape om te sluiten - REGEXEXTRACT: je beschrijft de vorm
=REGEXEXTRACT(B2,
"INV-[0-9]{6}") =REGEXEXTRACT(B2;
"INV-[0-9]{6}") REGEXEXTRACTGeeft het deel van een tekst terug dat aan een reguliere expressie voldoet.Druk op Escape om te sluitentekstDe tekst waarin je zoekt, meestal een cel.Druk op Escape om te sluitenpatroonDe reguliere expressie die beschrijft welk deel je wilt hebben.Druk op Escape om te sluiten
Wat er verandert als je van DEEL en VIND.ALLES naar een patroon gaat
- de 10 (de lengte van het nummer) verdwijnt: het patroon zegt zes cijfers
- een omschrijving zonder INV- geeft met DEEL en VIND.ALLES #WAARDE! en met REGEXEXTRACT #N/B, maar alleen het patroon weigert INV- met te weinig cijfers
- het patroon kan een cel zijn, zodat één formule meerdere soorten verwijzingen bedient
Collega met Excel 2019 of ouder
Excel 2021 en 2024 hebben geen REGEXEXTRACT en tonen #NAAM?. Gaat het bestand naar die versies, houd dan DEEL en VIND.ALLES aan.
Hoe Excel de functie berekent
Excel probeert het patroon op elke plaats in de tekst, van links naar rechts. De eerste plaats waar het hele patroon past, levert de eerste treffer.
Het derde argument bepaalt wat je terugkrijgt:
- 0 (standaard): de eerste treffer, als tekst
- 1: elke treffer, als matrix die over de rij overloopt
- 2: wat elk paar haakjes in het patroon heeft opgevangen, alleen voor de eerste treffer
Past het patroon nergens, dan is het resultaat #N/B. Het resultaat is altijd tekst, ook als het op een getal lijkt.
Let op: REGEXEXTRACT geeft altijd tekst terug, en #N/B als niets past. Zet WAARDE eromheen voor een getal en ALS.NB eromheen voor een melding die je kunt nalopen.
Denkmodel
Een markeerstift op een afgedrukte pagina: het patroon beschrijft hoe het gemarkeerde deel eruitziet, en REGEXEXTRACT kopieert alleen de gemarkeerde tekst: het eerste stuk, elk stuk, of de stukken tussen haakjes.
Begrippen op deze pagina: reguliere expressie, celverwijzing, overloop, matrix, argument
REGEXEXTRACT(tekst,patroon, [return_mode], [case_sensitivity])
REGEXEXTRACT(tekst;patroon; [return_mode]; [case_sensitivity])
| Argument | Soort | Betekenis | Standaard |
|---|---|---|---|
tekst | Verplicht | De tekst waarin je zoekt, meestal een cel. | |
patroon | Verplicht | De reguliere expressie die beschrijft welk deel je wilt hebben. | |
return_mode | Optioneel | 0 eerste treffer, 1 alle treffers, 2 de groepen van de eerste treffer. | 0 |
case_sensitivity | Optioneel | 0 hoofdlettergevoelig (standaard), 1 hoofdletters negeren. | 0 |
Geeft terug:De eerste treffer als tekst, alle treffers of de groepen als matrix, of #N/B als niets past.
Formules gebruiken komma's (,) tussen de argumenten, zoals in de Engelse Excel. Formules gebruiken puntkomma's (;) tussen de argumenten, zoals in de Nederlandse Excel. Formules gebruiken puntkomma's (;) tussen de argumenten, zoals in de Nederlandse Excel; de Engelse Excel gebruikt komma's (,).
Uitgewerkte voorbeelden
Beginner
Een factuurnummer uit een bankomschrijving halen
Je koppelt de ontvangsten van januari op het bankafschrift van de cliënt aan openstaande facturen. In elke omschrijving staat het factuurnummer als INV- met zes cijfers, maar de woorden eromheen verschillen per betaler, dus een vaste positie werkt niet.
| Rij | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Datum | Omschrijving | Bedrag | Factuurnr. | |
| 2 | 05-01-2026 | SEPA Overboeking Bakker Metaal BV INV-250871 dank u | €4,235.50€ 4.235,50 | INV-250871=REGEXEXTRACT(B2, "INV-[0-9]{6}")=REGEXEXTRACT(B2; "INV-[0-9]{6}") | |
| 3 | 06-01-2026 | iDEAL Kroon Bouw betaling INV-250902 en INV-250903 | €12,100.25€ 12.100,25 | INV-250902=REGEXEXTRACT(B3, "INV-[0-9]{6}")=REGEXEXTRACT(B3; "INV-[0-9]{6}") | |
| 4 | 07-01-2026 | Betaling Smit Handel factuur INV-251004 restant | €980.00€ 980,00 | INV-251004=REGEXEXTRACT(B4, "INV-[0-9]{6}")=REGEXEXTRACT(B4; "INV-[0-9]{6}") | |
| 5 |
Veeg opzij om alle kolommen te zien
Formule in D2
=REGEXEXTRACT(B2,"INV-[0-9]{6}")
=REGEXEXTRACT(B2;"INV-[0-9]{6}")
Resultaat: INV-250871
Stap voor stap
- In
B2staat de omschrijving “SEPA Overboeking Bakker Metaal BV INV-250871 dank u”. Het patroon isINV-[0-9]{6}: de tekens INV- precies zoals getypt, daarna[0-9]{6}, wat betekent: een cijfer van 0 tot en met 9, zes keer achter elkaar. - Excel probeert het patroon op elke plaats in de tekst, van links naar rechts. Bij “SEPA”, “Overboeking”, “Bakker”, “Metaal” en “BV” mislukt het meteen, omdat geen van die plaatsen met INV- begint.
- Bij “INV-250871” passen de vier tekens INV-, en daarna volgen zes cijfers: 2, 5, 0, 8, 7 en 1. Het hele patroon past, dus dit is de eerste treffer.
- REGEXEXTRACT geeft alleen het passende deel terug, als tekst: INV-250871 in
D2. De woorden voor en na het nummer vallen weg. - Kopieer
D2naar beneden. InB3staan twee nummers, INV-250902 en INV-250903, en de formule geeft alleen het eerste terug, INV-250902. InD4komt INV-251004.
Let op: Standaard is het hoofdlettergevoelig: een omschrijving met inv-250902 geeft #N/B, omdat het patroon hoofdletters vraagt. De eerste variatie lost dat op.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 3 varianten
Waarom het werkt
Een reguliere expressie beschrijft de vorm van wat je zoekt, niet de plaats, dus de formule blijft werken als de woorden rond het nummer van lengte veranderen. Het aantal {6} onderscheidt een factuurnummer van elke andere reeks cijfers.
Meer om op te letten
- Het patroon controleert niet wat na de zes cijfers komt. Een omschrijving met
INV-2508711(zeven cijfers) geeft ongemerkt INV-250871, een nummer dat niet bestaat. Test de opgehaalde nummers tegen je factuurlijst.
Varianten
=REGEXEXTRACT(B2,"INV-[0-9]{6}", 0, 1)
=REGEXEXTRACT(B2;"INV-[0-9]{6}"; 0; 1)
Het vierde argument 1 negeert hoofdletters, dus ook inv-250902 wordt gevonden. Het derde argument moet ingevuld zijn om daar te komen: 0 is de eerste treffer.
=REGEXEXTRACT(B2,"(?i)INV-[0-9]{6}")
=REGEXEXTRACT(B2;"(?i)INV-[0-9]{6}")
(?i) aan het begin van het patroon negeert ook hoofdletters, en reist mee met het patroon als dat in een cel staat.
=TEKST.COMBINEREN(", ",WAAR, REGEXEXTRACT(B2, "INV-[0-9]{6}", 1))
=TEKST.COMBINEREN(", ";WAAR; REGEXEXTRACT(B2; "INV-[0-9]{6}"; 1))
Een klant die meerdere facturen tegelijk betaalt, noemt ze allemaal, zoals in rij 3. Met het derde argument 1 geeft REGEXEXTRACT elke treffer (INV-250902 en INV-250903) als een overloop; TEKST.COMBINEREN zet ze in één cel, INV-250902, INV-250903, klaar om tegen de debiteurenlijst af te zetten. Rijen met één factuur blijven zoals ze zijn.
Halfgevorderd
Een activanummer uit een omschrijving als getal lezen
Je test de toevoegingen aan de vaste activa. Elke inkoopfactuurregel eindigt met een activacode, AS- en vijf cijfers, en de activastaat bewaart die vijf cijfers als getal. In de omschrijving staat ook een typenummer, dus het eerste getal in de tekst is het verkeerde.
| Rij | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Boekstuk | Omschrijving | Bedrag | Activanr. | |
| 2 | 25-0611 | Laptop Dell Latitude 5440 AS-10458 | €1,189.00€ 1.189,00 | 1045810458=WAARDE(REGEXEXTRACT(B2, "[0-9]{5}$"))=WAARDE(REGEXEXTRACT(B2; "[0-9]{5}$")) | |
| 3 | 25-0634 | Bureaustoel Ahrend Axia AS-10471 | €645.00€ 645,00 | 1047110471=WAARDE(REGEXEXTRACT(B3, "[0-9]{5}$"))=WAARDE(REGEXEXTRACT(B3; "[0-9]{5}$")) | |
| 4 | 25-0652 | Heftruck Linde E16 AS-10503 | €18,250.00€ 18.250,00 | 1050310503=WAARDE(REGEXEXTRACT(B4, "[0-9]{5}$"))=WAARDE(REGEXEXTRACT(B4; "[0-9]{5}$")) | |
| 5 | 25-0689 | Printer HP LaserJet M428 AS-10512 | €389.00€ 389,00 | 1051210512=WAARDE(REGEXEXTRACT(B5, "[0-9]{5}$"))=WAARDE(REGEXEXTRACT(B5; "[0-9]{5}$")) | |
| 6 |
Veeg opzij om alle kolommen te zien
Formule in D2
=WAARDE(REGEXEXTRACT(B2,"[0-9]{5}$"))
=WAARDE(REGEXEXTRACT(B2;"[0-9]{5}$"))
Resultaat: 1045810458
Stap voor stap
- In
B2staat de omschrijving “Laptop Dell Latitude 5440 AS-10458”. De binnenste functie rekent eerst: REGEXEXTRACT met het patroon[0-9]{5}$, dat vijf cijfers vraagt helemaal aan het eind van de tekst ($staat voor het einde). - Excel probeert het patroon van links af. Het typenummer 5440 heeft vier cijfers en wordt gevolgd door een spatie, dus het mislukt. Bij 10458 staan vijf cijfers vlak voor het einde van de tekst, dus het patroon past.
- REGEXEXTRACT geeft de tekst “10458” terug. Het lijkt een getal, maar het is tekst, en Excel behandelt het ook zo.
- WAARDE maakt van die tekst het getal 10458 in
D2. De tekst bestaat alleen uit cijfers, dus de regio-instelling speelt geen rol. - Kopieer
D2naar beneden:D3geeft 10471,D4geeft 10503 enD5geeft 10512. - Zonder WAARDE ziet
D2er hetzelfde uit maar bevat het tekst. Het getal 10458 opzoeken in een staat met getallen vindt dan niets (#N/B), en SOM overD2:D5geeft 0.
Let op: Schrijf je het patroon als [0-9]+, dan geeft D2 5440, het typenummer, zonder foutmelding. De formule lijkt goed en elke rij krijgt een geloofwaardig getal. Controleer één rij met de hand.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 2 varianten
Waarom het werkt
REGEXEXTRACT geeft altijd tekst terug, wat het patroon ook vond; WAARDE is de stap die er een getal van maakt, en staat rond de functie. Het anker $ zegt waar de activacode staat, zodat een getal eerder in de tekst niet wordt opgepikt.
Meer om op te letten
- Een regel zonder activacode, zoals een dienstenfactuur, geeft #N/B. De eerste variatie toont in plaats daarvan een melding.
Varianten
=ALS.NB(WAARDE(REGEXEXTRACT(B2,"[0-9]{5}$")), "Geen activanr.")
=ALS.NB(WAARDE(REGEXEXTRACT(B2;"[0-9]{5}$")); "Geen activanr.")
ALS.NB vangt alleen #N/B op, dus regels zonder activacode tonen “Geen activanr.” terwijl een echt probleem zichtbaar blijft.
=--REGEXEXTRACT(B2,"[0-9]{5}$")
=--REGEXEXTRACT(B2;"[0-9]{5}$")
Het dubbele minteken zet de tekst om in een getal, net als WAARDE. Kies WAARDE als anderen de formule lezen: de naam zegt wat het doet.
Gevorderd
Een journaalsleutel splitsen in vier delen
Een export van de cliënt bevat per journaalregel één sleutel, opgebouwd uit dagboek, boekstuk, relatie en btw-percentage, gescheiden door verticale streepjes. Je wilt de vier delen in vier cellen om de btw te testen, en sleutels met een andere opbouw moeten worden gemarkeerd, niet verkeerd opgeknipt.
| Rij | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 1 | Journaalsleutel | Bedrag excl. btw | Dagboek | Boekstuk | Relatie | Btw % | |
| 2 | VRK|25-0388|D1002|21% | €1,850.00€ 1.850,00 | VRK=ALS.NB(REGEXEXTRACT(A2, "^([A-Z]{3})\|([0-9]{2}-[0-9]{4})\|([A-Z][0-9]{4})\|([0-9]+)%$", 2), "Controleer sleutel")=ALS.NB(REGEXEXTRACT(A2; "^([A-Z]{3})\|([0-9]{2}-[0-9]{4})\|([A-Z][0-9]{4})\|([0-9]+)%$"; 2); "Controleer sleutel") | 25-0388 | D1002 | 21 | |
| 3 | VRK|25-0391|D1007|9% | €420.00€ 420,00 | |||||
| 4 | INK|25-0145|C2001|21% | €3,000.00€ 3.000,00 | |||||
| 5 | MEM|25-0912|D1002|0% | €275.00€ 275,00 | |||||
| 6 | VRK/25-0399/D1004/21% | €960.00€ 960,00 | |||||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in C2
=ALS.NB(REGEXEXTRACT(A2,"^([A-Z]{3})\|([0-9]{2}-[0-9]{4})\|([A-Z][0-9]{4})\|([0-9]+)%$", 2), "Controleer sleutel")
=ALS.NB(REGEXEXTRACT(A2;"^([A-Z]{3})\|([0-9]{2}-[0-9]{4})\|([A-Z][0-9]{4})\|([0-9]+)%$"; 2); "Controleer sleutel")
Resultaat: VRK | 25-0388 | D1002 | 21VRK | 25-0388 | D1002 | 21
Stap voor stap
- De binnenste functie rekent eerst. REGEXEXTRACT leest de sleutel in
A2, VRK|25-0388|D1002|21%, met een patroon van vier groepen:([A-Z]{3})drie hoofdletters,([0-9]{2}-[0-9]{4})een boekstuknummer,([A-Z][0-9]{4})een letter en vier cijfers, en([0-9]+)een of meer cijfers. - Tussen de groepen vraagt het patroon om
\|, een echt verticaal streepje. Zonder de backslash zou|“of” betekenen.^en$zetten het patroon vast aan begin en eind, en%staat buiten de laatste groep. - De hele sleutel past: VRK, dan 25-0388, dan D1002, dan 21 gevolgd door %. Met het derde argument op 2 geeft Excel terug wat de vier groepen hebben opgevangen, niet de hele treffer: VRK, 25-0388, D1002 en 21.
- ALS.NB kijkt naar het resultaat: geen #N/B, dus de vier waarden gaan door. Ze lopen over in
C2:F2. Het %-teken zit niet in de vierde waarde, en alle vier zijn tekst. - Kopieer de formule naar rij 3 en hetzelfde gebeurt voor VRK|25-0391|D1007|9%. Bij
A6, VRK/25-0399/D1004/21%, past nergens iets omdat de sleutel schuine strepen gebruikt: REGEXEXTRACT geeft #N/B, en ALS.NB toont “Controleer sleutel” alleen inC6.
Let op: Vergeet je de backslash, dan betekent | “of”. Het patroon vindt dan alleen VRK, dus er is een treffer, ALS.NB grijpt niet in, en de andere cellen bevatten niet de delen die je wilde. Er verschijnt geen foutmelding.
Meer over dit voorbeeld: waarom het werkt, nog 2 valkuilen, 2 varianten
Waarom het werkt
Elk paar haakjes definieert een groep, en met het derde argument op 2 krijg je de groepen terug in plaats van de hele treffer. Omdat het patroon met ^ begint en met $ eindigt, beschrijft het de hele sleutel: een sleutel met een extra deel of een ander scheidingsteken wordt met #N/B geweigerd in plaats van verkeerd opgeknipt.
Meer om op te letten
- Is een van
D2:F2niet leeg, dan is het resultaat #OVERLOPEN! in plaats van de vier waarden. - De vierde waarde is de tekst “21”, geen getal. Een vermenigvuldiging zet hem om, maar opzoeken of SOM doet dat niet. Gebruik WAARDE, zoals in de eerste variatie.
Varianten
=B2 * WAARDE(INDEX(REGEXEXTRACT(A2,"^([A-Z]{3})\|([0-9]{2}-[0-9]{4})\|([A-Z][0-9]{4})\|([0-9]+)%$", 2), 4)) / 100
=B2 * WAARDE(INDEX(REGEXEXTRACT(A2;"^([A-Z]{3})\|([0-9]{2}-[0-9]{4})\|([A-Z][0-9]{4})\|([0-9]+)%$"; 2); 4)) / 100
Berekent de btw voor de eerste sleutel in één cel: INDEX neemt de vierde groep, WAARDE maakt van de tekst 21 een getal, en 1,850.001.850,00 × 21 / 100 geeft 388,50.
=TEKST.SPLITSEN(A2,"|")
=TEKST.SPLITSEN(A2;"|")
Is de sleutel gewone tekst met één scheidingsteken, dan geeft TEKST.SPLITSEN de vier delen zonder patroon (het laatste als 21%, met het %-teken). Het controleert de vorm niet, dus een onjuiste sleutel wordt zonder waarschuwing opgeknipt.
Expert
Alle facturen uit een creditnota-omschrijving optellen
De omschrijving van een creditnota noemt de facturen die ze corrigeert, met de hand getypt: de hoofdletters wisselen en het aantal facturen verschilt per omschrijving. Je wilt het openstaande bedrag van alle genoemde facturen in één cel, om te vergelijken met het totaal van de creditnota.
| Rij | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Factuurnr. | Debiteur | Openstaand | |||
| 2 | F-25-1204 | Dijkstra Techniek BV | €4,235.50€ 4.235,50 | Omschrijving | Creditnota Dijkstra Techniek: korting op f-25-1204, F-25-1211 en F-25-1219 (levering te laat) | |
| 3 | F-25-1207 | Van Rijn Logistiek BV | €1,980.00€ 1.980,00 | Gecrediteerd | €25,085.75€ 25.085,75=LET( omschrijving, E2, facturen, ALS.NB(REGEXEXTRACT(omschrijving, "F-[0-9]{2}-[0-9]{4}", 1, 1), "-"), SOM(SOMMEN.ALS(C2:C7, A2:A7, facturen)) )=LET( omschrijving; E2; facturen; ALS.NB(REGEXEXTRACT(omschrijving; "F-[0-9]{2}-[0-9]{4}"; 1; 1); "-"); SOM(SOMMEN.ALS(C2:C7; A2:A7; facturen)) ) | |
| 4 | F-25-1211 | Dijkstra Techniek BV | €12,100.25€ 12.100,25 | |||
| 5 | F-25-1215 | Meijer Staalbouw BV | €760.00€ 760,00 | |||
| 6 | F-25-1219 | Dijkstra Techniek BV | €8,750.00€ 8.750,00 | |||
| 7 | F-25-1223 | Smit Verpakking BV | €3,025.00€ 3.025,00 | |||
| 8 |
Veeg opzij om alle kolommen te zien
Formule in E3
=LET( omschrijving,E2, facturen, ALS.NB(REGEXEXTRACT(omschrijving, "F-[0-9]{2}-[0-9]{4}", 1, 1), "-"), SOM(SOMMEN.ALS(C2:C7, A2:A7, facturen)) )
=LET( omschrijving;E2; facturen; ALS.NB(REGEXEXTRACT(omschrijving; "F-[0-9]{2}-[0-9]{4}"; 1; 1); "-"); SOM(SOMMEN.ALS(C2:C7; A2:A7; facturen)) )
Resultaat: €25,085.75€ 25.085,75
Stap voor stap
- LET koppelt de naam
omschrijvingaan de tekst inE2en de naamfacturenaan de volgende expressie. Er wordt nog niets uitgerekend. - Voor
facturendoorzoekt REGEXEXTRACT de omschrijving opF-[0-9]{2}-[0-9]{4}: F-, twee cijfers, een streepje, vier cijfers. Het derde argument 1 vraagt alle treffers, het vierde argument 1 negeert hoofdletters. - Drie plaatsen passen: f-25-1204 (kleine letter, alleen gevonden doordat hoofdletters worden genegeerd), F-25-1211 en F-25-1219. Het resultaat is een matrix van drie teksten in één rij.
- ALS.NB ziet geen #N/B en laat de matrix door. SOMMEN.ALS rekent nu één keer per verwijzing, omdat de criteria een matrix zijn: de openstaande bedragen van F-25-1204, F-25-1211 en F-25-1219 zijn 4,235.504.235,50, 12,100.2512.100,25 en 8,750.008.750,00. SOMMEN.ALS negeert hoofdletters, dus f-25-1204 komt overeen met F-25-1204.
- SOM telt de drie bedragen op: 4,235.504.235,50 + 12,100.2512.100,25 + 8,750.008.750,00 = 25,085.7525.085,75.
- Zet in
E2een omschrijving zonder factuurnummer en REGEXEXTRACT geeft #N/B. ALS.NB vervangt dat door “-”, wat bij geen enkel factuurnummer past, dus het totaal is 0.
Let op: Zet het vierde argument op 0, de standaardwaarde, en f-25-1204 wordt niet gevonden. Het totaal wordt 20,850.2520.850,25 in plaats van 25,085.7525.085,75, zonder foutmelding: een stil tekort van 4,235.504.235,50.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant
Waarom het werkt
return_mode 1 maakt van de omschrijving een lijst met verwijzingen, en SOMMEN.ALS met een matrix als criteria maakt van die lijst een lijst met bedragen, zodat je geen hulpkolommen nodig hebt. LET rekent het patroon één keer uit en geeft het een naam.
Wanneer je het niet gebruikt: als de verwijzingen altijd door hetzelfde scheidingsteken zijn gescheiden, vervangt TEKST.SPLITSEN de REGEXEXTRACT zonder patroon om te onderhouden, maar het breekt zodra mensen in de ene omschrijving “, ” typen en in de volgende “ en ”. Kunnen de gecrediteerde facturen in aparte rijen worden ingevoerd, dan is een eenvoudige SOMMEN.ALS over die rijen duidelijker en werkt het in elke versie.
Meer om op te letten
- Laat je het derde argument op 0 staan, dan komt alleen de eerste treffer terug. Staat het vierde argument nog op 1, dan is dat f-25-1204 en is het totaal 4,235.504.235,50 in plaats van 25,085.7525.085,75, opnieuw zonder foutmelding.
Varianten
=TEKST.COMBINEREN(", ",WAAR, REGEXEXTRACT(E2, "F-[0-9]{2}-[0-9]{4}", 1, 1))
=TEKST.COMBINEREN(", ";WAAR; REGEXEXTRACT(E2; "F-[0-9]{2}-[0-9]{4}"; 1; 1))
Toont de gevonden verwijzingen in één cel, als f-25-1204, F-25-1211, F-25-1219, zodat je kunt lezen waaruit het totaal bestaat.
Veelgemaakte fouten
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
| #N/B bij sommige rijen | De tekst bevat geen deel dat helemaal bij het patroon past: de hoofdletters wijken af (inv- tegenover INV-), er ontbreekt een cijfer, of de verwijzing heeft een spatie waar het patroon een streepje heeft. | Leg de tekst die faalt naast het patroon en vergelijk teken voor teken. Zet het vierde argument op 1 voor hoofdletters, en zet ALS.NB rond de formule, zodat rijen zonder treffer een melding tonen die je kunt nalopen. |
| Het getal telt niet mee en vindt zijn tegenhanger niet | Het resultaat is tekst, ook als het alleen uit cijfers bestaat. SOM slaat het over, en opzoeken in een kolom met getallen vindt het niet. | Zet WAARDE rond REGEXEXTRACT. WAARDE leest gewone cijfers in elke regio-instelling hetzelfde; bij een deel met een decimaalteken, zoals 12,50, volgt het de regio-instelling, dus test het op de computer die het bestand gaat gebruiken. |
| Er komt een verkeerd deel terug en er is geen foutmelding | Het patroon is losser dan de tekst: [0-9]+ pakt de eerste reeks cijfers, en dat kan een typenummer of een datum zijn in plaats van de verwijzing. | Beschrijf wat de verwijzing omringt: een vast voorvoegsel, een exact aantal zoals {6}, of een anker zoals $ voor het eind van de tekst. Test op rijen met een bijna-treffer. |
| #OVERLOPEN! in plaats van het resultaat | Staat het derde argument op 1 of 2, dan komen er meerdere waarden en is een cel die daarvoor naast de formule nodig is niet leeg. | Maak de cellen rechts van de formule leeg, of geef één waarde terug met het derde argument op 0. |
| #NAAM? in Excel 2021 of 2024 | De werkmap wordt geopend in een versie zonder de regex-functies, die alleen in Microsoft 365 bestaan. | Houd de formule voor gebruikers van Microsoft 365 en geef de anderen een versie met DEEL en VIND.ALLES, die in elke versie werken. |
Gebruikt in combinaties
- De klant opzoeken met een regexHaal het factuurnummer met REGEXEXTRACT uit een bankomschrijving, maak er een patroon van en laat X.ZOEKEN dat patroon vergelijken met een factuurlijst waarin nummers op verschillende manieren zijn getypt.Excel voor Microsoft 365 (Deze combinatie vereist Excel voor Microsoft 365)