Beschikbaar in:Alle versies (Werkt in Excel 2007, elke latere versie, Microsoft 365 en Excel voor het web)Voorbeelden vragen Excel 2021 of nieuwerCategorie:Tekst

DEEL

MID in Engelstalige Excel

Haalt een stuk uit een tekst: jij geeft aan op welke positie het begint en hoeveel tekens het telt.

Moeilijkheidsgraad 2 van 5. Op zich is het niet meer dan begin en lengte, maar in de praktijk komen beide getallen uit VIND.ALLES, en dan gaat het vaak mis bij de plus één en de min één.

Laatst bijgewerkt: 13 oktober 2026

Bekijk de uitgewerkte voorbeelden

Fragment van het werkblad: in C2 staat de formule
RijABC
1BoekstukDatumBoekstukjaar
2VRK-2025-041230-12-20252025=DEEL(A2, 5, 4)=DEEL(A2; 5; 4)
3INK-2025-118731-12-2025
4MEM-2026-000302-01-2026
5BNK-2025-095503-01-2026
Formulecel (C2)Invoer

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.

DEEL(tekst, begin_getal, aantal_tekens)
DEEL(tekst; begin_getal; aantal_tekens)
Argumenten
ArgumentSoortBetekenis
tekstVerplichtDe tekst waaruit je een stuk haalt; meestal een celverwijzing.
begin_getalVerplichtPositie van het eerste teken dat je wilt. Het eerste teken is 1.
aantal_tekensVerplichtHoeveel 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.

Fragment van het werkblad: in C2 staat de formule
RijABCD
1BoekstukDatumBoekstukjaar
2VRK-2025-041230-12-20252025=DEEL(A2, 5, 4)=DEEL(A2; 5; 4)
3INK-2025-118731-12-2025
4MEM-2026-000302-01-2026
5BNK-2025-095503-01-2026
6
Formulecel (C2)Invoer

Formule in C2

=DEEL(A2, 5, 4)
=DEEL(A2; 5; 4)

Resultaat: 2025

Stap voor stap
  1. In A2 staat VRK-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.
  2. begin_getal is 5: de 2 van 2025. De telling begint bij 1, dus positie 5 is het vijfde teken en niet het zesde.
  3. aantal_tekens is 4. Vanaf positie 5 pakt DEEL de posities 5, 6, 7 en 8: 2, 0, 2, 5.
  4. DEEL levert de tekst 2025, en die staat links uitgelijnd in C2, want het is tekst.
  5. Kopieer C2 omlaag tot en met C5: 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 C2 toont -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.

Fragment van het werkblad: in C4 staat de formule
RijABCD
1OmschrijvingDebetLeverancier
225-0412 Hoekstra Vastgoed BV€4,500.00€ 4.500,00
325-0413 Lease Noord BV€1,250.00€ 1.250,00
425-0414 Dekker Klimaatbeheer BV€380.50€ 380,50Dekker Klimaatbeheer BV=SPATIES.WISSEN(DEEL(A4, 9, 100))=SPATIES.WISSEN(DEEL(A4; 9; 100))
525-0415 De Vries Schoonmaak€912.00€ 912,00
6
Formulecel (C4)InvoerTekens: extra spatieOpmerking: A4 eindigt met twee spaties: 25-0414 Dekker Klimaatbeheer BV gevolgd door twee spaties is 33 tekens.

Formule in C4

=SPATIES.WISSEN(DEEL(A4, 9, 100))
=SPATIES.WISSEN(DEEL(A4; 9; 100))

Resultaat: Dekker Klimaatbeheer BV

Stap voor stap
  1. Excel rekent eerst DEEL(A4; 9; 100) uit. A4 is 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.
  2. 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.
  3. SPATIES.WISSEN haalt de twee spaties achteraan weg en houdt Dekker Klimaatbeheer BV over, 23 tekens. Dat zie je in C4.
  4. Zonder SPATIES.WISSEN zou in C4 de naam met twee onzichtbare spaties staan, en wie in de crediteurenlijst exact zoekt, krijgt #N/B.
  5. In C2 leveren dezelfde 9 en 100 Hoekstra Vastgoed BV op (20 tekens over van de 100 gevraagde), in C3 Lease 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.

Fragment van het werkblad: in C2 staat de formule
RijABCD
1ExportregelPeriodeRelatie
225-0412|D1001|VRK33D1001=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)
325-0413|C2001|INK33
425-0414|D1017|VRK44
525-0415||MEM44
6
Formulecel (C2)Invoer

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
  1. 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.
  2. De tweede VIND.ALLES krijgt als begin 8 + 1 = 9, en slaat zo het eerste streepje over. VIND.ALLES("|"; A2; 9): D1001 staat op 9 tot en met 13, het tweede streepje op 14. Uitkomst: 14.
  3. begin_getal voor DEEL is 8 + 1 = 9: het eerste teken na het eerste streepje.
  4. aantal_tekens is 14 - 8 - 1 = 5: de afstand tussen de twee streepjes, zonder het eerste streepje zelf.
  5. DEEL(A2; 9; 5) levert D1001, en dat staat in C2.
  6. 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.
  7. In C3 geeft 25-0413|C2001|INK dezelfde posities, 8 en 14, en de uitkomst is C2001. In C5 staat het tweede streepje van 25-0415||MEM op 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.

Fragment van het werkblad: in C2 staat de formule
RijABCD
1Factuurnummer zoals getyptLeverancierCijfers
2F-2025/0412Dekker Klimaatbeheer BV20250412=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) )
3inv 2025 0412Dekker Klimaatbeheer BV
4FA 0012-25Tellinga Techniek BV
5-Noordhaven Logistiek
6
Formulecel (C2)Invoer

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
  1. 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.
  2. 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.
  3. --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.
  4. 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.
  5. TEKST.SAMENV plakt ze aan elkaar tot één tekst: 20250412. C2 toont 20250412, 8 tekens.
  6. Omlaag gekopieerd laten de andere rijen zien hoe de formule zich gedraagt:

    • inv 2025 0412 geeft ook 20250412, gelijk aan C2 bij dezelfde leverancier: een dubbele factuur om uit te zoeken
    • FA 0012-25 levert 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 C5 blijft 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/O412 wordt 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

Veelgemaakte fouten
SymptoomOorzaakOplossing
Resultaat begint bij het scheidingsteken of mist een letterJe 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 0DEEL(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 nietsJe 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)