TEKST.VOOR
TEXTBEFORE in Engelstalige Excel
Geeft het deel van een tekst dat voor een gekozen scheidingsteken staat, geteld vanaf het begin of vanaf het einde, zonder LINKS en VIND.ALLES.
Laatst bijgewerkt: 13 oktober 2026
| Rij | A | B | C |
|---|---|---|---|
| 1 | Relatie (export) | ||
| 2 | D1001 - Kaya Design BV | D1001=TEKST.VOOR(A2, " - ")=TEKST.VOOR(A2; " - ") | |
| 3 | D1002 - Molenaar Bouw BV | ||
| 4 | C2001 - Bakker-Smit Installatie BV | ||
| 5 | C2002 - Hendriks Metaal BV |
Veeg opzij om alle kolommen te zien
Resultaat: D1001
=TEKST.VOOR(A2," - ")
=TEKST.VOOR(A2;" - ")
Wat TEKST.VOOR doet en wanneer je het gebruikt
Wat het doet: het geeft het deel van een tekst vóór een scheidingsteken, bijvoorbeeld de relatiecode voor het scheidingsteken in een geëxporteerde naam.
Wanneer je het gebruikt: als een code, een map of een naam voor een vast scheidingsteken staat, zoals de map in een bestandspad of het factuurnummer in een bankomschrijving. Het vervangt LINKS met VIND.ALLES en min één. Een negatieve instance_num past bij teksten van wisselende lengte waarvan het laatste deel vaststaat. Heb je alle delen tegelijk nodig, dan is TEKST.SPLITSEN beter.
De twee grootste voordelen:
- Geen positie uitrekenen: je noemt het scheidingsteken, dus VIND.ALLES en min één zijn niet nodig.
- Eigen resultaat als niets gevonden is: met
if_not_foundtoon je je eigen melding in plaats van #N/B, enmatch_endbehandelt het einde van de tekst als scheidingsteken.
Hoe Excel de functie berekent
Excel zoekt eerst het scheidingsteken in tekst, met de hoofdletterinstelling die je opgeeft. Bij een positief volgnummer telt Excel scheidingstekens van links, bij een negatief van rechts. Excel knipt bij het gekozen scheidingsteken en geeft alles links ervan terug, zonder het scheidingsteken zelf.
Heeft de tekst minder scheidingstekens dan gevraagd, dan is het resultaat de tekst die je voor die situatie opgaf, of #N/B als je dat hebt weggelaten. Staat het vijfde argument op 1, dan telt het einde van de tekst eerst als extra scheidingsteken, zodat de hele tekst terugkomt in plaats van een foutwaarde. Is tekst een bereik, dan gebeurt dit voor elke cel en lopen de resultaten over.
Let op: TEKST.VOOR is standaard hoofdlettergevoelig: zet het vierde argument op 1 als de hoofdletters wisselen, anders worden cellen met Factuur of FACTUUR overgeslagen als je zoekt op factuur.
Denkmodel
Een schaar die je bij het n-de scheidingsteken zet, geteld vanaf het begin of het einde, waarna je het linkerstuk houdt.
Begrippen op deze pagina: foutwaarde, overloop, argument, bereik, cel
TEKST.VOOR(tekst,scheidingsteken, [instance_num], [match_mode], [match_end], [if_not_found])
TEKST.VOOR(tekst;scheidingsteken; [instance_num]; [match_mode]; [match_end]; [if_not_found])
| Argument | Soort | Betekenis | Standaard |
|---|---|---|---|
tekst | Verplicht | De tekst die wordt geknipt: een cel, een tekst of een bereik van cellen. | |
scheidingsteken | Verplicht | Het teken of de tekst waar wordt geknipt. | |
instance_num | Optioneel | Bij welk voorkomen van het scheidingsteken wordt geknipt; negatief telt vanaf het einde. | 1 |
match_mode | Optioneel | 0 let op hoofdletters (standaard), 1 negeert ze. | 0 |
match_end | Optioneel | 1 behandelt het einde van de tekst als scheidingsteken. | 0 |
if_not_found | Optioneel | Wat je terugkrijgt als er geen scheidingsteken is; standaard #N/B. | #N/B |
Geeft terug:De tekst vóór het gekozen voorkomen van het scheidingsteken
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
De relatiecode van een geëxporteerde naam afsplitsen
Sanne de Vries controleert de relatielijst van Veldhuis Installatie BV. In de export staan relatiecode en naam in één cel, gescheiden door een spatie, een koppelteken en een spatie. Zij heeft alleen de code nodig, om die te kunnen vergelijken met de lijsten van debiteuren en crediteuren.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Relatie (export) | |||
| 2 | D1001 - Kaya Design BV | D1001=TEKST.VOOR(A2, " - ")=TEKST.VOOR(A2; " - ") | ||
| 3 | D1002 - Molenaar Bouw BV | |||
| 4 | C2001 - Bakker-Smit Installatie BV | |||
| 5 | C2002 - Hendriks Metaal BV | |||
| 6 |
Veeg opzij om alle kolommen te zien
Formule in C2
=TEKST.VOOR(A2," - ")
=TEKST.VOOR(A2;" - ")
Resultaat: D1001
Stap voor stap
- Excel leest tekst, de cel A2, en vindt D1001 - Kaya Design BV. Het scheidingsteken bestaat uit drie tekens: spatie, koppelteken, spatie.
- Het volgnummer is niet opgegeven en dus 1: het eerste voorkomen.
D1001telt 5 tekens, dus de eerste combinatie spatie-koppelteken-spatie begint op positie 6. - Excel houdt alles vóór positie 6 over, de 5 tekens
D1001, en laat het scheidingsteken en de naam weg.C2toontD1001. - Kopieer je de formule omlaag, dan toont
C3D1002,C4C2001enC5C2002. InA4staat in de naam een koppelteken (Bakker-Smit), maar dat staat niet tussen spaties en is dus niet het scheidingsteken.
Let op: Een cel zonder spatie-koppelteken-spatie, bijvoorbeeld een relatie die als D1005 Smits is getypt, toont #N/B. Zoek de cellen met een foutwaarde: dat zijn de rijen waar de export afwijkt van de rest.
Meer over dit voorbeeld: waarom het werkt, 1 variant
Waarom het werkt
Het scheidingsteken bestaat uit meer dan één teken, en daarom blijven koppeltekens in namen met rust. TEKST.VOOR werkt vanuit het scheidingsteken dat je opgeeft, dus er is geen positie om te tellen en geen min één om af te trekken.
Varianten
=LINKS(A2,VIND.ALLES(" - ", A2) - 1)
=LINKS(A2;VIND.ALLES(" - "; A2) - 1)
De oudere opbouw die in elke versie werkt: zoek de positie, trek 1 af en neem zoveel tekens.
Halfgevorderd
De map van elk dossierbestand vinden, hoe diep ook
In het gedeelde controledossier van Veldhuis Installatie BV staat een lijst met bestandspaden. Sommige bestanden staan drie niveaus diep, andere vijf. Je wilt de map van elk bestand, dus het pad zonder bestandsnaam, om te controleren of bevestigingen en bankafschriften op de juiste plek staan.
Omdat de diepte wisselt, is alleen de laatste schuine streep een betrouwbare snede.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Bestandspad | |||
| 2 | Veldhuis/2025/Debiteuren/Confirmaties/conf-Smits.pdf | Veldhuis/2025/Debiteuren/Confirmaties=TEKST.VOOR(A2, "/", -1)=TEKST.VOOR(A2; "/"; -1) | ||
| 3 | Veldhuis/2025/Bank/afschrift-dec.pdf | |||
| 4 | Veldhuis/2025/Loon/loonjournaal.xlsx | |||
| 5 | Veldhuis/2025/Voorraad/Telling/Lijst/voorraad.xlsx | |||
| 6 |
Veeg opzij om alle kolommen te zien
Formule in C2
=TEKST.VOOR(A2,"/", -1)
=TEKST.VOOR(A2;"/"; -1)
Resultaat: Veldhuis/2025/Debiteuren/Confirmaties
Stap voor stap
- In
A2staat Veldhuis/2025/Debiteuren/Confirmaties/conf-Smits.pdf. Het scheidingsteken is een schuine streep. - Het pad bevat 4 schuine strepen: na Veldhuis, na 2025, na Debiteuren en na Confirmaties.
- Het volgnummer is -1, dus Excel telt van rechts en kiest de laatste schuine streep, de vierde, direct voor conf-Smits.pdf. Alles links daarvan komt terug: Veldhuis/2025/Debiteuren/Confirmaties.
- Omlaag gekopieerd geeft
C3Veldhuis/2025/Bank (3 schuine strepen, de laatste voor afschrift-dec.pdf),C4Veldhuis/2025/Loon enC5Veldhuis/2025/Voorraad/Telling/Lijst (5 schuine strepen). Dezelfde formule werkt bij elke diepte. - Zonder de -1 zou het volgnummer 1 zijn en
A2alleen Veldhuis geven. Met 3 zouA2Veldhuis/2025/Debiteuren geven, en dat is niet de map van het bestand.
Let op: Een pad met backslashes, zoals Windows het toont, bevat helemaal geen schuine streep en toont #N/B. Kijk welke streep de export gebruikt voordat je de formule kopieert.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant
Waarom het werkt
Van rechts tellen draait de vraag om: je vraagt niet hoe diep het bestand staat, maar om de laatste schuine streep, en die staat in elk pad vóór de bestandsnaam. De bestandsnaam is het deel dat verschilt, dus daar hoort de snede.
Meer om op te letten
- Een pad dat op een schuine streep eindigt, zoals een mapnaam zonder bestand, komt terug als het pad zonder de slotstreep, dus het bevat nog steeds de laatste map en niet de bovenliggende map. Controleer dat elke rij op een bestandsnaam eindigt.
Varianten
=TEKST.NA(A2,"/", -1)
=TEKST.NA(A2;"/"; -1)
De omgekeerde keuze: alleen de bestandsnaam, alles na de laatste schuine streep.
Gevorderd
De relatiecode uit het midden van een boekingsomschrijving halen
Het omschrijvingsveld van de XAF-auditfile van Veldhuis Installatie BV bevat vier delen gescheiden door een verticale streep (|):
- dagboek
- boekstuknummer
- relatiecode
- relatienaam
Bankregels hebben geen naam, dus daar eindigt de omschrijving na de code. Je wilt de relatiecode van alle regels in één formule, om ze te vergelijken met de lijsten van debiteuren en crediteuren.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Omschrijving | |||
| 2 | INK|25-0412|C2001|Bakker-Smit Installatie BV | C2001=TEKST.VOOR(TEKST.NA(A2:A6, "|", 2), "|", 1, 0, 1)=TEKST.VOOR(TEKST.NA(A2:A6; "|"; 2); "|"; 1; 0; 1) | ||
| 3 | VRK|25-0413|D1001|Kaya Design BV | D1001 | ||
| 4 | BNK|25-0414|D1002 | D1002 | ||
| 5 | MEM|25-0415|C2002|Hendriks Metaal BV | C2002 | ||
| 6 | BNK|25-0416|D1003 | D1003 | ||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in C2
=TEKST.VOOR(TEKST.NA(A2:A6,"|", 2), "|", 1, 0, 1)
=TEKST.VOOR(TEKST.NA(A2:A6;"|"; 2); "|"; 1; 0; 1)
Resultaat: C2001 / D1001 / D1002 / C2002 / D1003C2001 / D1001 / D1002 / C2002 / D1003
Stap voor stap
- De binnenste functie gaat eerst: TEKST.NA(A2:A6; "|"; 2) neemt in elk van de 5 cellen alles na de 2e verticale streep.
- Dat levert vijf teksten op: C2001|Bakker-Smit Installatie BV, D1001|Kaya Design BV, D1002, C2002|Hendriks Metaal BV en D1003. De twee bankregels hebben maar 2 verticale strepen, dus na de 2e blijft alleen de code over.
- De buitenste TEKST.VOOR knipt elk van deze teksten bij de 1e verticale streep (volgnummer 1, hoofdlettergevoelig). In de eerste tekst staat die streep na C2001, dus C2001 komt terug; de andere geven op dezelfde manier D1001 en C2002.
- Voor D1002 en D1003 is geen verticale streep meer over. Het vijfde argument is 1, dus het einde van de tekst telt als scheidingsteken en de hele tekst komt terug: D1002 en D1003.
- De vijf resultaten lopen over van
C2totC6: C2001, D1001, D1002, C2002, D1003. Zonder de laatste twee argumenten zoudenC4enC6#N/B tonen.
Let op: De formule neemt het 3e veld op positie. Heeft één regel een extra veld vooraan, bijvoorbeeld een tweede boekstuknummer, dan komt er een naam of een nummer uit en verschijnt er geen foutmelding. Sorteer de resultaten en zoek waarden die geen C of D met vier cijfers zijn.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant
Waarom het werkt
TEKST.NA haalt het begin van de tekst weg en TEKST.VOOR het eind, dus samen halen ze een middendeel eruit. De twee functies zijn elkaars spiegelbeeld, en daarom staat in beide hetzelfde scheidingsteken. Dankzij het vijfde argument kan ook het laatste veld van een regel een middendeel zijn.
Meer om op te letten
- Een regel met minder dan 2 verticale strepen, zoals
MEM|26-0003, laat de binnenste TEKST.NA #N/B tonen, en de buitenste functie geeft die fout door.
Varianten
=INDEX(TEKST.SPLITSEN(A2,"|"), 3)
=INDEX(TEKST.SPLITSEN(A2;"|"); 3)
Splitst één regel in zijn delen en neemt het 3e. Langer, maar een betere keuze als je twee of drie van de delen nodig hebt. Het werkt per cel.
Expert
Het genoemde factuurnummer in bankomschrijvingen vinden
Je legt het bankafschrift van Veldhuis Installatie BV naast de debiteurenadministratie. De betaler heeft de omschrijving zelf getypt, dus:
- het woord
factuurstaat in elke hoofdlettervariant - het nummer wordt soms gevolgd door een naam en soms staat het aan het eind
- sommige regels noemen geen factuur
Je wilt per regel het factuurnummer of een duidelijke melding, in één leesbare formule die de volgende beoordelaar kan volgen.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Bankomschrijving | |||
| 2 | Betaling Factuur 25-1101 Kaya Design BV | 25-1101=LET( omschrijving, A2:A7, na_label, TEKST.NA(omschrijving, "factuur ", 1, 1, 0, ""), ALS(na_label = "", "Geen factuur genoemd", TEKST.VOOR(na_label, " ", 1, 0, 1)) )=LET( omschrijving; A2:A7; na_label; TEKST.NA(omschrijving; "factuur "; 1; 1; 0; ""); ALS(na_label = ""; "Geen factuur genoemd"; TEKST.VOOR(na_label; " "; 1; 0; 1)) ) | ||
| 3 | Ontvangst factuur 25-1104 | 25-1104 | ||
| 4 | Salaris december | Geen factuur genoemd | ||
| 5 | Creditnota FACTUUR 25-1077 retour | 25-1077 | ||
| 6 | Incasso factuur 25-1108 Mulder Horeca BV | 25-1108 | ||
| 7 | Factuurnummer onbekend, navragen | Geen factuur genoemd | ||
| 8 |
Veeg opzij om alle kolommen te zien
Formule in C2
=LET( omschrijving,A2:A7, na_label, TEKST.NA(omschrijving, "factuur ", 1, 1, 0, ""), ALS(na_label = "", "Geen factuur genoemd", TEKST.VOOR(na_label, " ", 1, 0, 1)) )
=LET( omschrijving;A2:A7; na_label; TEKST.NA(omschrijving; "factuur "; 1; 1; 0; ""); ALS(na_label = ""; "Geen factuur genoemd"; TEKST.VOOR(na_label; " "; 1; 0; 1)) )
Resultaat: 25-1101 / 25-1104 / Geen factuur genoemd / 25-1077 / 25-1108 / Geen factuur genoemd25-1101 / 25-1104 / Geen factuur genoemd / 25-1077 / 25-1108 / Geen factuur genoemd
Stap voor stap
- LET slaat omschrijving op als
A2:A7, de zes bankregels. Er wordt nog niets berekend. na_label knipt elke regel na het eerste
"factuur "(het woord en een spatie) en negeert hoofdletters omdat het vierde argument 1 is. Resultaten: 25-1101 Kaya Design BV; 25-1104; leeg; 25-1077 retour; 25-1108 Mulder Horeca BV; leeg.Regel 3 heeft geen label. Regel 6 bevat
Factuurnummer, maar na factuur komt een n en geen spatie, dus ook die past niet. Beide geven de lege tekst die je als laatste argument hebt opgegeven.- ALS test eerst elke na_label. Waar die leeg is, regel 3 en 6, is het resultaat Geen factuur genoemd, en voor die regels geeft ALS het label terug in plaats van het resultaat van TEKST.VOOR.
- Elders houdt TEKST.VOOR(na_label; " "; 1; 0; 1) het deel vóór de eerste spatie over, en de laatste 1 laat een tekst zonder spatie als compleet gelden: 25-1101; 25-1104 (helemaal geen spatie, het einde werkt als scheidingsteken); 25-1077; 25-1108.
- De zes resultaten lopen over van
C2totC7: 25-1101, 25-1104, Geen factuur genoemd, 25-1077, 25-1108, Geen factuur genoemd. Om te debuggen vervang je de laatste regel van de LET door na_label, zodat je het eerste tussenresultaat ziet.
Let op: De omgekeerde fout is het vierde argument op 0 laten staan. Regel 1 en 4 bevatten Factuur en FACTUUR, passen dan niet meer en tonen Geen factuur genoemd. Het resultaat lijkt een lijst omschrijvingen zonder verwijzing, dus niemand verdenkt de formule.
Meer over dit voorbeeld: waarom het werkt, nog 2 valkuilen, 1 variant
Waarom het werkt
Elke naam is een stap die je los kunt lezen en testen, en beide functies werken op alle zes regels tegelijk.
Gebruik deze opbouw niet als het bestand moet openen in Excel 2021 of ouder, want TEKST.NA en TEKST.VOOR bestaan daar niet, of voor een eenmalige opschoning: Flash Fill of Power Query (Extraheren, Tekst na scheidingsteken) doet hetzelfde zonder formule, met als nadeel dat je het opnieuw moet uitvoeren zodra de gegevens veranderen.
Meer om op te letten
- Laat je het vijfde argument weg in TEKST.VOOR, dan is het effect bij regel 2, waar het nummer aan het eind staat, anders: de snede vindt geen spatie, dus TEKST.VOOR geeft voor die regel #N/B in plaats van 25-1104, en ALS geeft die fout door in plaats van een label te tonen.
- Omschrijvingen als
factuur 25-1101 en 25-1102leveren alleen het eerste nummer op. De formule geeft één verwijzing per regel.
Varianten
=TEKST.VOOR(TEKST.NA(A2,"factuur ", 1, 1), " ", 1, 0, 1)
=TEKST.VOOR(TEKST.NA(A2;"factuur "; 1; 1); " "; 1; 0; 1)
Een kortere vorm voor één regel, zonder melding. Ontbreekt het label, dan toont TEKST.NA #N/B en het resultaat ook, en dat is duidelijker dan een lege cel als je één regel controleert.
Veelgemaakte fouten
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
| #N/B in cellen zonder het scheidingsteken | Sommige cellen tonen #N/B, meestal die waarin de tekst korter is of het scheidingsteken helemaal niet voorkomt. | Bepaal wat zo'n cel moet opleveren. Een 1 als vijfde argument geeft de hele tekst als alleen het laatste scheidingsteken ontbreekt; het zesde argument geeft een melding die je zelf kiest. Zet er geen ALS.FOUT omheen, want dat verbergt ook echte fouten. |
| De map is te kort, zonder foutmelding | Je knipt bij de derde schuine streep om de map te krijgen, en bestanden in diepere mappen geven een te korte map terug, zonder foutmelding. | Is het deel dat je wilt weglaten altijd het laatste, tel dan vanaf het einde met volgnummer -1. Een positief getal werkt alleen als elke tekst dezelfde opbouw heeft. |
| Cellen met andere hoofdletters worden overgeslagen | Het scheidingsteken is een woord, zoals factuur, en cellen met Factuur of FACTUUR worden overgeslagen. | In geëxporteerde omschrijvingen wisselen de hoofdletters bijna altijd, dus zet het vierde argument op 1. |
| #WAARDE! of #N/B terwijl het scheidingsteken er staat | Het resultaat is #WAARDE! of #N/B, terwijl het scheidingsteken wel in de tekst staat. | Het volgnummer is 0, wat #WAARDE! geeft, of groter dan het aantal scheidingstekens in de tekst, wat #N/B geeft (of je eigen waarde voor niet gevonden, als je die hebt opgegeven). Gebruik 1 of -1 voor het eerste en het laatste scheidingsteken. |
Gebruikt in combinaties
- De klant vinden via een bankomschrijvingKnip het factuurnummer uit een bankomschrijving met TEKST.NA en TEKST.VOOR en zoek de klant daarna op in de debiteurenlijst met X.ZOEKEN.Excel 2024 of nieuwer (Deze combinatie vereist Excel 2024 of nieuwer)