DEEL
MID in Engelstalige Excel
Haalt een stuk uit een tekst: jij geeft aan op welke positie het begint en hoeveel tekens het telt.
Laatst bijgewerkt: 13 oktober 2026
| Rij | A | B | C |
|---|---|---|---|
| 1 | Boekstuk | Datum | Boekstukjaar |
| 2 | VRK-2025-0412 | 30-12-2025 | 2025=DEEL(A2, 5, 4)=DEEL(A2; 5; 4) |
| 3 | INK-2025-1187 | 31-12-2025 | |
| 4 | MEM-2026-0003 | 02-01-2026 | |
| 5 | BNK-2025-0955 | 03-01-2026 |
Veeg opzij om alle kolommen te zien
Resultaat: 2025
=DEEL(A2,5, 4)
=DEEL(A2;5; 4)
Wat DEEL doet en wanneer je het gebruikt
Wat het doet: het haalt een stuk uit een tekst, vanaf een positie die je kiest, bijvoorbeeld het boekjaar uit een boekstuknummer.
Wanneer je het gebruikt: voor velden op een vaste plek in een code, of voor de tekst tussen twee scheidingstekens als VIND.ALLES het begin en de lengte levert. Werk je in Excel 2024 of Microsoft 365, dan lezen TEKST.VOOR en TEKST.NA duidelijker bij scheidingstekens, en knipt TEKST.SPLITSEN een tekst in één keer in veel stukken.
Hoe Excel de functie berekent
Excel gaat zo te werk:
- het nummert de tekens van de tekst vanaf 1
- het controleert begin_getal: kleiner dan 1 geeft #WAARDE!, voorbij het laatste teken levert lege tekst op
- het kijkt of aantal_tekens niet negatief is
- het kopieert tekens vanaf begin_getal en stopt na aantal_tekens tekens, of eerder als de tekst ophoudt
De uitkomst is tekst, ook als er alleen cijfers in staan.
Let op: VIND.ALLES geeft de positie van het scheidingsteken zelf, dus de tekst erna begint bij VIND.ALLES(...) + 1. Zonder de plus één zit de uitkomst één positie verkeerd.
Denkmodel
Je legt een liniaal langs de tekst, zet je vinger op het beginstreepje en leest het afgesproken aantal tekens af; houdt de tekst eerder op, dan lees je wat er staat.
Syntaxis
Officiële documentatie van DEELDEEL(tekst,begin_getal, aantal_tekens)
DEEL(tekst;begin_getal; aantal_tekens)
| Argument | Soort | Betekenis |
|---|---|---|
tekst | Verplicht | De tekst waaruit je een stuk haalt; meestal een celverwijzing. |
begin_getal | Verplicht | Positie van het eerste teken dat je wilt. Het eerste teken is 1. |
aantal_tekens | Verplicht | Hoeveel tekens je neemt. Meer dan er over zijn mag. |
Geeft terug:Tekst: zoveel tekens als aantal_tekens aangeeft, vanaf begin_getal
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
Het boekjaar uit boekstuknummers lezen
In de XAF-auditfile-export is elk boekstuknummer opgebouwd uit dagboek, jaar en volgnummer, zoals VRK-2025-0412. Voor de afgrenzingstest rond 31 december 2025 wil je een kolom met het jaar uit het boekstuknummer, om die naast de boekingsdatum te leggen. Alle boekstuknummers zijn op dezelfde manier opgebouwd.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Boekstuk | Datum | Boekstukjaar | |
| 2 | VRK-2025-0412 | 30-12-2025 | 2025=DEEL(A2, 5, 4)=DEEL(A2; 5; 4) | |
| 3 | INK-2025-1187 | 31-12-2025 | ||
| 4 | MEM-2026-0003 | 02-01-2026 | ||
| 5 | BNK-2025-0955 | 03-01-2026 | ||
| 6 |
Veeg opzij om alle kolommen te zien
Formule in C2
=DEEL(A2,5, 4)
=DEEL(A2;5; 4)
Resultaat: 2025
Stap voor stap
- In
A2staatVRK-2025-0412, 13 tekens. V is 1, R is 2, K is 3, het eerste streepje 4, het jaartal beslaat 5 tot en met 8, het tweede streepje is 9, en 0412 beslaat 10 tot en met 13. - begin_getal is 5: de 2 van 2025. De telling begint bij 1, dus positie 5 is het vijfde teken en niet het zesde.
- aantal_tekens is 4. Vanaf positie 5 pakt DEEL de posities 5, 6, 7 en 8: 2, 0, 2, 5.
- DEEL levert de tekst 2025, en die staat links uitgelijnd in
C2, want het is tekst. Kopieer
C2omlaag tot en metC5: 2025, 2025, 2026, 2025. In rij 5 zegt het boekstuknummer 2025 maar is de datum 3 januari 2026: die boeking bekijk je nader in de afgrenzingstest.Maak van de 5 in de formule een 4 en
C2toont -202: begin je één positie te vroeg, dan komt het streepje mee en valt het laatste cijfer weg.
Let op: Heeft een dagboekcode vier letters, zoals MEMO-2026-0004, dan schuift het jaartal één plek op en levert DEEL -202. Een vaste beginpositie is alleen veilig zolang de opbouw ook echt vastligt; controleer eerst de dagboekcodes in de export.
Meer over dit voorbeeld: waarom het werkt, 1 variant
Waarom het werkt
Alle boekstuknummers zijn hetzelfde opgebouwd, dus het jaartal staat altijd op positie 5 tot en met 8. Meer hoeft DEEL niet te weten: waar het begint en hoe ver het doorloopt. Met LINKS of RECHTS lukt dit niet in één stap, want het jaartal raakt geen van beide uiteinden van het boekstuknummer.
Varianten
=WAARDE(DEEL(A2,5, 4)) = JAAR(B2)
=WAARDE(DEEL(A2;5; 4)) = JAAR(B2)
Maakt van het jaar een getal en vergelijkt het met het jaar van de boekingsdatum: WAAR als ze overeenkomen, ONWAAR voor de boekingen waar je bij de afgrenzingstest achteraan gaat.
Halfgevorderd
De leveranciersnaam achter de boekstukcode overhouden
In een export van inkoopboekingen begint de kolom Omschrijving met een boekstukcode van zeven tekens, een spatie, dan de naam van de leverancier. De namen zijn niet even lang, en het systeem van de cliënt heeft achter sommige namen spaties laten staan. Je wilt alleen de naam, zonder die spaties, zodat je hem kunt vergelijken met de crediteurenlijst.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Omschrijving | Debet | Leverancier | |
| 2 | 25-0412 Hoekstra Vastgoed BV | €4,500.00€ 4.500,00 | ||
| 3 | 25-0413 Lease Noord BV | €1,250.00€ 1.250,00 | ||
| 4 | 25-0414 Dekker Klimaatbeheer BV | €380.50€ 380,50 | Dekker Klimaatbeheer BV=SPATIES.WISSEN(DEEL(A4, 9, 100))=SPATIES.WISSEN(DEEL(A4; 9; 100)) | |
| 5 | 25-0415 De Vries Schoonmaak | €912.00€ 912,00 | ||
| 6 |
Veeg opzij om alle kolommen te zien
Formule in C4
=SPATIES.WISSEN(DEEL(A4,9, 100))
=SPATIES.WISSEN(DEEL(A4;9; 100))
Resultaat: Dekker Klimaatbeheer BV
Stap voor stap
- Excel rekent eerst DEEL(A4; 9; 100) uit.
A4is 25-0414 Dekker Klimaatbeheer BV met twee spaties erachter: 8 tekens voor de code en de spatie, 23 voor de naam, 2 spaties, samen 33. De code 25-0414 beslaat positie 1 tot en met 7, de spatie daarna is 8, dus de naam begint op 9. - aantal_tekens vraagt om 100 tekens, maar vanaf positie 9 zijn er nog maar 33 - 8 = 25. DEEL neemt die 25 en stopt aan het eind van de tekst, zonder foutwaarde: Dekker Klimaatbeheer BV met twee spaties erachter.
- SPATIES.WISSEN haalt de twee spaties achteraan weg en houdt Dekker Klimaatbeheer BV over, 23 tekens. Dat zie je in
C4. - Zonder SPATIES.WISSEN zou in
C4de naam met twee onzichtbare spaties staan, en wie in de crediteurenlijst exact zoekt, krijgt #N/B. - In
C2leveren dezelfde 9 en 100 Hoekstra Vastgoed BV op (20 tekens over van de 100 gevraagde), inC3Lease Noord BV. Eén ruim gekozen aantal_tekens past bij elke naamlengte.
Let op: Kan een naam ooit langer worden dan 100 tekens, dan wordt hij zonder waarschuwing afgekapt. Neem dan LENGTE(A4) als aantal_tekens; dat is altijd lang genoeg.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant
Waarom het werkt
Omdat de code altijd even breed is, begint de naam steeds op positie 9, en DEEL vindt het geen probleem als je meer tekens vraagt dan er over zijn. Met 100 zeg je bewust 'tot het eind', zonder de lengte uit te rekenen. SPATIES.WISSEN lost daarna het enige probleem op: de spaties waarmee sommige namen zijn opgevuld.
Meer om op te letten
- Een code van zes of acht tekens klopt niet meer met het vaste begin op 9: je verliest de eerste letter van de naam, of er blijft een spatie voor staan. Het tweede geval poetst SPATIES.WISSEN weg, het eerste niet.
Varianten
=SPATIES.WISSEN(DEEL(A4,VIND.ALLES(" ", A4) + 1, LENGTE(A4)))
=SPATIES.WISSEN(DEEL(A4;VIND.ALLES(" "; A4) + 1; LENGTE(A4)))
Begint na de eerste spatie in plaats van op een vaste 9, zodat de lengte van de code niet meer uitmaakt.
Gevorderd
De relatiecode tussen twee scheidingstekens halen
Het systeem van de cliënt exporteert elke boekingsregel als één tekstveld: boekstuknummer, relatiecode en dagboek, gescheiden door verticale streepjes, zoals 25-0412|D1001|VRK. Om de regels te koppelen aan de debiteuren- en crediteurenlijst wil je de relatiecode tussen het eerste en het tweede streepje. Het tweede streepje moet je zoeken vanaf na het eerste, anders komt VIND.ALLES weer bij het eerste streepje uit.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Exportregel | Periode | Relatie | |
| 2 | 25-0412|D1001|VRK | 33 | D1001=DEEL(A2, VIND.ALLES("|", A2) + 1, VIND.ALLES("|", A2, VIND.ALLES("|", A2) + 1) - VIND.ALLES("|", A2) - 1)=DEEL(A2; VIND.ALLES("|"; A2) + 1; VIND.ALLES("|"; A2; VIND.ALLES("|"; A2) + 1) - VIND.ALLES("|"; A2) - 1) | |
| 3 | 25-0413|C2001|INK | 33 | ||
| 4 | 25-0414|D1017|VRK | 44 | ||
| 5 | 25-0415||MEM | 44 | ||
| 6 |
Veeg opzij om alle kolommen te zien
Formule in C2
=DEEL(A2,VIND.ALLES("|", A2) + 1, VIND.ALLES("|", A2, VIND.ALLES("|", A2) + 1) - VIND.ALLES("|", A2) - 1)
=DEEL(A2;VIND.ALLES("|"; A2) + 1; VIND.ALLES("|"; A2; VIND.ALLES("|"; A2) + 1) - VIND.ALLES("|"; A2) - 1)
Resultaat: D1001
Stap voor stap
- Excel rekent eerst de VIND.ALLES-functies uit. VIND.ALLES("|"; A2) op
25-0412|D1001|VRK: 25-0412 beslaat positie 1 tot en met 7, dus het eerste streepje staat op 8. Deze zoekactie komt drie keer in de formule voor, en elke keer is de uitkomst 8. - De tweede VIND.ALLES krijgt als begin 8 + 1 = 9, en slaat zo het eerste streepje over. VIND.ALLES("|"; A2; 9):
D1001staat op 9 tot en met 13, het tweede streepje op 14. Uitkomst: 14. - begin_getal voor DEEL is 8 + 1 = 9: het eerste teken na het eerste streepje.
- aantal_tekens is 14 - 8 - 1 = 5: de afstand tussen de twee streepjes, zonder het eerste streepje zelf.
- DEEL(A2; 9; 5) levert
D1001, en dat staat inC2. - Laat je de + 1 in het begin van de tweede VIND.ALLES weg, dan begint die bij 8 en vindt hij het eerste streepje opnieuw. aantal_tekens wordt 8 - 8 - 1 = -1, en DEEL geeft #WAARDE!, want een negatieve lengte bestaat niet.
- In
C3geeft25-0413|C2001|INKdezelfde posities, 8 en 14, en de uitkomst isC2001. InC5staat het tweede streepje van25-0415||MEMop 9: aantal_tekens is 9 - 8 - 1 = 0 en DEEL levert lege tekst; waarom, lees je bij de valkuilen.
Let op: Een regel zonder relatie, zoals 25-0415||MEM, levert lege tekst op zonder foutwaarde, dus de regel lijkt op het eerste gezicht in orde. Tel de lege uitkomsten, bijvoorbeeld met AANTAL.LEGE.CELLEN of een filter, voordat je op de koppeling vertrouwt.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant
Waarom het werkt
Het stuk dat je zoekt, zit tussen twee scheidingstekens. DEEL begint daarom één positie na het eerste scheidingsteken en neemt de afstand tussen beide min één als lengte. Dat het juiste tweede streepje wordt gevonden, komt door begin_getal in VIND.ALLES: de zoektocht begint na het eerste streepje, dus VIND.ALLES kan niet twee keer hetzelfde streepje teruggeven.
Meer om op te letten
- Een regel met minder dan twee streepjes geeft #WAARDE!. Als signaal is dat handig, maar zet de formule in ALS.FOUT als anderen het blad te zien krijgen.
Varianten
=LET( eersteStreep,VIND.ALLES("|", A2), tweedeStreep, VIND.ALLES("|", A2, eersteStreep + 1), DEEL(A2, eersteStreep + 1, tweedeStreep - eersteStreep - 1) )
=LET( eersteStreep;VIND.ALLES("|"; A2); tweedeStreep; VIND.ALLES("|"; A2; eersteStreep + 1); DEEL(A2; eersteStreep + 1; tweedeStreep - eersteStreep - 1) )
Hetzelfde met LET: het eerste streepje wordt één keer berekend in plaats van drie keer, en de regel met DEEL leest als 'begin na het eerste streepje, lengte tot het tweede'.
ExpertExcel 2021 of nieuwer (Dit voorbeeld vereist Excel 2021 of nieuwer)
Alleen de cijfers van een getypt factuurnummer overhouden
Bij je test op dubbele facturen zijn de factuurnummers in het inkoopboek op verschillende manieren getypt: met voorvoegsels, spaties, streepjes en schuine strepen. Om ze te vergelijken wil je alleen de cijfers, en een voorloopnul moet blijven staan. F-2025/0412 en inv 2025 0412 zijn dan dezelfde factuur, twee keer geboekt.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Factuurnummer zoals getypt | Leverancier | Cijfers | |
| 2 | F-2025/0412 | Dekker Klimaatbeheer BV | 20250412=LET( brontekst, A2, tekens, DEEL(brontekst, REEKS(LENGTE(brontekst)), 1), cijfers, FILTER(tekens, ISGETAL(--tekens), ""), TEKST.SAMENV(cijfers) )=LET( brontekst; A2; tekens; DEEL(brontekst; REEKS(LENGTE(brontekst)); 1); cijfers; FILTER(tekens; ISGETAL(--tekens); ""); TEKST.SAMENV(cijfers) ) | |
| 3 | inv 2025 0412 | Dekker Klimaatbeheer BV | ||
| 4 | FA 0012-25 | Tellinga Techniek BV | ||
| 5 | - | Noordhaven Logistiek | ||
| 6 |
Veeg opzij om alle kolommen te zien
Formule in C2
=LET( brontekst,A2, tekens, DEEL(brontekst, REEKS(LENGTE(brontekst)), 1), cijfers, FILTER(tekens, ISGETAL(--tekens), ""), TEKST.SAMENV(cijfers) )
=LET( brontekst;A2; tekens; DEEL(brontekst; REEKS(LENGTE(brontekst)); 1); cijfers; FILTER(tekens; ISGETAL(--tekens); ""); TEKST.SAMENV(cijfers) )
Resultaat: 20250412
Stap voor stap
- brontekst is
A2:F-2025/0412. LENGTE telt F, het streepje, 4 cijfers, de schuine streep en nog 4 cijfers: 1 + 1 + 4 + 1 + 4 = 11. - REEKS(11) maakt de reeks 1, 2, 3 tot en met 11. DEEL krijgt die hele reeks als begin_getal, met aantal_tekens 1, en levert 11 losse tekens: F, -, 2, 0, 2, 5, /, 0, 4, 1, 2. Die matrix heet tekens.
- --tekens probeert van elk teken een getal te maken. Bij de cijfers lukt dat; F en het streepje geven #WAARDE!, en de schuine streep ook. ISGETAL maakt daar WAAR van voor de 8 cijfers en ONWAAR voor de andere 3.
- FILTER houdt de tekens over waarbij de test WAAR is: 2, 0, 2, 5, 0, 4, 1, 2. Let op: dat zijn nog steeds teksttekens uit DEEL, geen getallen, en dat doet er bij de volgende stap toe. Deze 8 tekens vormen cijfers.
- TEKST.SAMENV plakt ze aan elkaar tot één tekst: 20250412.
C2toont 20250412, 8 tekens. Omlaag gekopieerd laten de andere rijen zien hoe de formule zich gedraagt:
inv 2025 0412geeft ook 20250412, gelijk aanC2bij dezelfde leverancier: een dubbele factuur om uit te zoekenFA 0012-25levert 001225 op, met de voorloopnullen, omdat de cijfers nooit een getal zijn geworden- het enkele streepje bevat geen cijfers; FILTER geeft dan de waarde van als_leeg, lege tekst, en
C5blijft leeg in plaats van #BEREKENEN! te tonen
Let op: De omgekeerde fout is begin_getal en aantal_tekens omdraaien: DEEL(brontekst; 1; REEKS(LENGTE(brontekst))). Dat oogt bijna hetzelfde, maar levert steeds langere beginstukken op (F, F-, F-2 enzovoort) in plaats van losse tekens, en op deze rij komt geen enkel stuk door de cijfertest, omdat elk beginstuk met de F begint.
Meer over dit voorbeeld: waarom het werkt, nog 2 valkuilen, 1 variant
Waarom het werkt
DEEL accepteert een matrix als begin_getal en levert dan ook een matrix, één stuk per beginpositie; met aantal_tekens 1 hak je een tekst zo in losse tekens. Staan de tekens eenmaal los in een matrix, dan kan FILTER elk teken aan een test onderwerpen en zet TEKST.SAMENV wat overblijft weer aan elkaar.
Voor een eenmalige opschoning is dit te zwaar: Zoeken en vervangen op spaties en streepjes, of Snel aanvullen, gaat sneller en laat geen formule achter. Bij een import van duizenden boekingsregels die steeds terugkomt, is een Power Query-stap met Text.Select die alleen cijfers bewaart sneller dan DEEL dat per rij elk teken apart berekent; daar staat tegenover dat je moet vernieuwen.
Meer om op te letten
- Zet je WAARDE rond de uitkomst om er een getal van te maken, dan verdwijnen de voorloopnullen: 001225 wordt 1225, en een factuurnummer dat alleen in de voorloopnullen verschilt, lijkt dan gelijk. Bewaar factuurnummers als tekst.
- De formule gooit alles weg wat geen cijfer is, dus ook een tikfout als de letter O in plaats van een nul.
F-2025/O412wordt dan 2025412, zeven cijfers. Zet er een controle naast, bijvoorbeeld LENGTE(C2) = 8.
Varianten
=TEKST.SAMENV(ALS(ISGETAL(--DEEL(A2,REEKS(LENGTE(A2)), 1)), DEEL(A2, REEKS(LENGTE(A2)), 1), ""))
=TEKST.SAMENV(ALS(ISGETAL(--DEEL(A2;REEKS(LENGTE(A2)); 1)); DEEL(A2; REEKS(LENGTE(A2)); 1); ""))
Zonder LET en FILTER: ALS maakt van elk teken dat geen cijfer is lege tekst, en TEKST.SAMENV slaat die lege stukken over. Langer, en DEEL wordt twee keer berekend.
Veelgemaakte fouten
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
| Resultaat begint bij het scheidingsteken of mist een letter | Je uitkomst zit één positie verkeerd: hij begint met het scheidingsteken, of de eerste letter ontbreekt. | Tel 1 op bij het resultaat van VIND.ALLES, zodat het stuk na het scheidingsteken begint. Probeer het uit op een kort voorbeeld en tel de tekens één keer met de hand na. |
| #WAARDE! bij beginpositie 0 | DEEL(A2; 0; 4) geeft #WAARDE!. | In Excel begint de telling bij 1, niet bij 0 zoals in veel programmeertalen. Het eerste teken is positie 1. |
| SOMMEN.ALS op het uitgelezen jaartal vindt niets | Je hebt met DEEL een jaartal uit een code gehaald, en SOMMEN.ALS vindt daarop niets. | Dat jaartal is tekst. Vergelijk het met tekst, of maak er met WAARDE een getal van, zodat het aansluit op de getallen in de rest van je model. |
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)
- Een geplakte lijst splitsen en opschonen tot één kolomSplits een in één cel geplakte lijst factuurnummers op de komma's, haal de losse spaties weg met SPATIES.WISSEN en zet de stukjes met NAAR.KOLOM onder elkaar, klaar om te vergelijken.Excel 2024 of nieuwer (Deze combinatie vereist Excel 2024 of nieuwer)