Beschikbaar in:Excel 2019 of nieuwer (Werkt in Excel 2019, elke latere versie, Microsoft 365 en Excel voor het web)Voorbeelden vragen Excel 2021 of nieuwerCategorie:LogischIn beoordeling

SCHAKELEN

SWITCH in Engelstalige Excel

Vergelijkt één waarde met een lijst mogelijke waarden en geeft het resultaat dat bij de eerste exacte overeenkomst hoort, met een optioneel alternatief.

Moeilijkheidsgraad 2 van 5. Het idee is klein, maar het alternatief staat als laatste zonder bijbehorend resultaat, en de functie vergelijkt alleen exacte waarden, nooit voorwaarden zoals groter dan.

Laatst bijgewerkt: 13 oktober 2026

Bekijk de uitgewerkte voorbeelden

Fragment van het werkblad: in D2 staat de formule
RijABCD
1Boekingsnr.DagboekcodeBedragDagboek
225-0412VK€12,100.00€ 12.100,00Verkoopboek=SCHAKELEN(B2, "BK", "Bankboek", "VK", "Verkoopboek", "IK", "Inkoopboek")=SCHAKELEN(B2; "BK"; "Bankboek"; "VK"; "Verkoopboek"; "IK"; "Inkoopboek")
325-0413IK€4,235.50€ 4.235,50
425-0414BK€8,750.00€ 8.750,00
525-0415MEM€3,025.00€ 3.025,00
Formulecel (D2)Invoer

Resultaat: Verkoopboek

=SCHAKELEN(B2, "BK", "Bankboek", "VK", "Verkoopboek", "IK", "Inkoopboek")
=SCHAKELEN(B2; "BK"; "Bankboek"; "VK"; "Verkoopboek"; "IK"; "Inkoopboek")

Wat SCHAKELEN doet en wanneer je het gebruikt

Wat het doet: het vergelijkt één waarde met een lijst codes en geeft het resultaat terug dat bij de eerste overeenkomst hoort, bijvoorbeeld de dagboeknaam bij een boekingscode.

Wanneer je het gebruikt: als elke code een eigen naam, tarief of categorie heeft: dagboekcodes, btw-codes, risicoklassen. Het vervangt geneste ALS-functies die steeds dezelfde cel testen. Voor bereiken en vergelijkingen (meer dan 1.000) gebruik je ALS.VOORWAARDEN.

De drie grootste voordelen:

  • Getoetste waarde één keer: de expressie staat één keer in de formule in plaats van in elke ALS.
  • Ingebouwd alternatief: een laatste argument zonder partner is de standaardwaarde voor onbekende codes.
  • Leest als een lijst: code en resultaat staan in paren naast elkaar.

Hoe Excel de functie berekent

Excel rekent de expressie één keer uit. Daarna leest Excel de argumenten erna in paren, van links naar rechts:

  • de expressie wordt vergeleken met waarde1, en zijn ze gelijk, dan komt resultaat1 terug en stopt Excel
  • zijn ze verschillend, dan gaat Excel door met waarde2, enzovoort
  • alleen de eerste overeenkomst telt, dus een herhaalde waarde wordt nooit bereikt
  • komt geen enkele waarde overeen, dan geeft Excel de standaardwaarde als je die hebt opgegeven (het laatste argument, zonder bijbehorend resultaat) en anders #N/B

Let op: Als een resultaat ontbreekt, heeft de laatste waarde geen bijbehorend resultaat en leest Excel die als standaardwaarde: elke code zonder overeenkomst toont dan die waarde in plaats van een foutwaarde.

Denkmodel

Denk aan een sorteertafel met een rij bakken met een label. Er komt een pakket binnen, je leest de code, loopt de bakken van links naar rechts langs en legt het pakket in de eerste bak met die code. Is er geen bak voor, dan gaat het in de overloopbak als je die hebt, en anders komt het afgekeurd terug.

Begrippen op deze pagina: overloop, argument, bereik, cel

SCHAKELEN(expressie, waarde1, resultaat1, [waarde2, resultaat2, result2], ..., [standaard])
SCHAKELEN(expressie; waarde1; resultaat1; [waarde2, resultaat2; result2]; ...; [standaard])
Argumenten
ArgumentSoortBetekenis
expressieVerplichtDe waarde die wordt vergeleken; ze wordt één keer uitgerekend.
waarde1VerplichtDe eerste waarde om met de expressie te vergelijken.
resultaat1VerplichtWat de functie geeft als waarde1 overeenkomt.
waarde2, resultaat2OptioneelMeer paren van een waarde en het bijbehorende resultaat.
standaardOptioneelWat je krijgt als niets overeenkomt. Altijd het laatste argument.

Geeft terug:Het resultaat bij de eerste waarde die gelijk is aan expressie, anders standaard of #N/B

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 naam van het dagboek bij een boekingscode

Je beoordeelt het grootboekuittreksel van een cliënt. Elke boeking heeft een korte dagboekcode, maar in je werkpapier hoort de naam van het dagboek. Je wilt een kolom die BK, VK en IK omzet in Bankboek, Verkoopboek en Inkoopboek.

Fragment van het werkblad: in D2 staat de formule
RijABCDE
1Boekingsnr.DagboekcodeBedragDagboek
225-0412VK€12,100.00€ 12.100,00Verkoopboek=SCHAKELEN(B2, "BK", "Bankboek", "VK", "Verkoopboek", "IK", "Inkoopboek")=SCHAKELEN(B2; "BK"; "Bankboek"; "VK"; "Verkoopboek"; "IK"; "Inkoopboek")
325-0413IK€4,235.50€ 4.235,50
425-0414BK€8,750.00€ 8.750,00
525-0415MEM€3,025.00€ 3.025,00
6
Formulecel (D2)Invoer

Formule in D2

=SCHAKELEN(B2, "BK", "Bankboek", "VK", "Verkoopboek", "IK", "Inkoopboek")
=SCHAKELEN(B2; "BK"; "Bankboek"; "VK"; "Verkoopboek"; "IK"; "Inkoopboek")

Resultaat: Verkoopboek

Stap voor stap
  1. In B2 staat VK. Dat is de expressie, en Excel rekent haar één keer uit.
  2. Excel vergelijkt VK met de eerste waarde, "BK". Ze zijn verschillend, dus het resultaat dat bij BK hoort wordt overgeslagen.
  3. De volgende waarde is "VK". Die is gelijk aan B2, dus Excel geeft het bijbehorende resultaat: de tekst Verkoopboek.
  4. Daar stopt Excel. De waarde "IK" wordt niet meer bekeken, en daarom telt bij een dubbele waarde alleen de eerste overeenkomst.
  5. Trek je de formule door naar D5, dan komt daar MEM langs. MEM is niet BK, VK of IK en er is geen standaardwaarde, dus D5 toont #N/B. In het voorbeeld op niveau Halfgevorderd zie je hoe je dat opvangt.

Let op: Een memoriaalboeking (MEM) staat niet in de lijst, dus de rij toont #N/B. Voor een onbekende code is dat juist, maar de foutwaarde werkt door in elk totaal dat de kolom gebruikt.

Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant

Waarom het werkt

SCHAKELEN rekent de expressie één keer uit en loopt dan de paren af tot een waarde gelijk is. Drie paren zijn genoeg, omdat elke code in het uittreksel bekend is, en de codes zijn korte tekst, dus gelijkheid is precies de toets die je nodig hebt.

Meer om op te letten

  • Laat je per ongeluk het laatste resultaat weg, dan wordt "IK" de standaardwaarde: elke boeking die niet BK of VK is toont dan de tekst IK, zonder foutmelding die je waarschuwt.

Varianten

=ALS(B2="BK", "Bankboek", ALS(B2="VK", "Verkoopboek", ALS(B2="IK", "Inkoopboek", NB())))
=ALS(B2="BK"; "Bankboek"; ALS(B2="VK"; "Verkoopboek"; ALS(B2="IK"; "Inkoopboek"; NB())))

Hetzelfde resultaat met geneste ALS-functies, die ook werken in Excel 2016 en ouder. B2 komt drie keer terug en de formule wordt met elke code moeilijker te lezen.

Halfgevorderd

Risicocodes omzetten in steekproefgroottes, met een alternatief

Je controleplan toont per controlegebied een risicocode: H voor hoog, M voor midden, L voor laag. Volgens de steekproefrichtlijn test je 25 items bij H, 15 bij M en 8 bij L.

De codes zijn met de hand getypt, een deel in kleine letters, en bij één gebied staat nog een tijdelijke aanduiding in plaats van een code. Je wilt de steekproefgrootte naast elk gebied, en een duidelijke melding waar de code niet een van de drie is.

Fragment van het werkblad: in C2 staat de formule
RijABCD
1ControlegebiedRisicocodeSteekproef
2Omzetm1515=SCHAKELEN(B2, "H", 25, "M", 15, "L", 8, "Controleer code")=SCHAKELEN(B2; "H"; 25; "M"; 15; "L"; 8; "Controleer code")
3SalarissenH
4VoorraadL
5Vaste activaTBD
6
Formulecel (C2)Invoer

Formule in C2

=SCHAKELEN(B2, "H", 25, "M", 15, "L", 8, "Controleer code")
=SCHAKELEN(B2; "H"; 25; "M"; 15; "L"; 8; "Controleer code")

Resultaat: 1515

Stap voor stap
  1. In B2 staat m, in kleine letters. Dat is de expressie.
  2. Excel vergelijkt m met "H": nee. Excel vergelijkt m met "M": SCHAKELEN let niet op hoofdletters, dus m is gelijk aan M en Excel heeft een overeenkomst.
  3. Excel geeft het resultaat dat bij "M" hoort: 15. Het laatste argument, de tekst Controleer code, heeft geen bijbehorend resultaat en komt niet aan bod, want het wordt alleen gebruikt als niets overeenkomt.
  4. Trek je de formule door naar C5, dan staat in B5 de tekst TBD. Die is niet H, M of L, dus geen enkele waarde komt overeen en SCHAKELEN geeft de standaardwaarde: de tekst Controleer code. Zonder dat laatste argument zou C5 #N/B tonen.
  5. Verander B2 in H en het resultaat wordt 25, zonder dat je de formule aanraakt.

Let op: De standaardwaarde is tekst. SOM over kolom C slaat die over, dus een gebied met een onbekende code krijgt ongemerkt geen steekproef in het totaal. Tel de cellen met de melding met AANTAL.ALS voordat je op de som vertrouwt.

Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 2 varianten

Waarom het werkt

Na de expressie leest Excel de argumenten in paren. Hier volgen zeven argumenten op de expressie, dus de paren raken een argument te kort, en dat overgebleven laatste argument geldt als standaardwaarde. De vergelijking let niet op hoofdletters, dus met de hand getypte codes hoef je niet op hoofdlettergebruik schoon te maken.

Meer om op te letten

  • Een code met een spatie aan het eind, zoals "H " uit een import, is niet gelijk aan H. De code komt bij de standaardwaarde terecht, waardoor een gebied met hoog risico als onbekend wordt behandeld. Maak de code bij geïmporteerde gegevens eerst schoon met SPATIES.WISSEN.

Varianten

=SCHAKELEN(B2, "H", 25, "M", 15, "L", 8)
=SCHAKELEN(B2; "H"; 25; "M"; 15; "L"; 8)

Zonder standaardwaarde: een onbekende code geeft #N/B. Kies dit als een foutwaarde die het werk stopt beter is dan een melding die je over het hoofd kunt zien.

=SCHAKELEN(SPATIES.WISSEN(B2), "H", 25, "M", 15, "L", 8, "Controleer code")
=SCHAKELEN(SPATIES.WISSEN(B2); "H"; 25; "M"; 15; "L"; 8; "Controleer code")

Dezelfde formule met SPATIES.WISSEN om de expressie, voor codes die met losse spaties binnenkomen.

Gevorderd

Rekeningen in de saldibalans indelen op het eerste cijfer

De saldibalans van de cliënt komt uit een export waarin de rekeningnummers als tekst zijn opgeslagen, en sommige hebben een spatie ervoor. Voor je cijferanalyse wil je elke rekening aan een onderdeel koppelen op basis van het eerste cijfer:

  • 1: de balans
  • 4: bedrijfskosten
  • 8: omzet

Al het andere, zoals de tussenrekening 9900, moet worden gemarkeerd voor beoordeling.

Fragment van het werkblad: in C2 staat de formule
RijABCD
1GrootboekrekeningOmschrijvingOnderdeel
24520HuurBedrijfskosten=SCHAKELEN(LINKS(SPATIES.WISSEN(A2), 1), "1", "Balans", "4", "Bedrijfskosten", "8", "Omzet", "Te beoordelen")=SCHAKELEN(LINKS(SPATIES.WISSEN(A2); 1); "1"; "Balans"; "4"; "Bedrijfskosten"; "8"; "Omzet"; "Te beoordelen")
31710Af te dragen loonheffing
48010Productomzet
54100Lonen en salarissen
69900Tussenrekening
7
Formulecel (C2)InvoerTekens: extra spatieOpmerking: De rekeningnummers zijn tekst. A2 begint met een spatie, die het rooster als een klein teken tekent.

Formule in C2

=SCHAKELEN(LINKS(SPATIES.WISSEN(A2), 1), "1", "Balans", "4", "Bedrijfskosten", "8", "Omzet", "Te beoordelen")
=SCHAKELEN(LINKS(SPATIES.WISSEN(A2); 1); "1"; "Balans"; "4"; "Bedrijfskosten"; "8"; "Omzet"; "Te beoordelen")

Resultaat: Bedrijfskosten

Stap voor stap
  1. Excel rekent van binnen naar buiten. In A2 staat " 4520", met een spatie ervoor.
  2. SPATIES.WISSEN haalt de spatie voor het nummer weg en geeft "4520".
  3. LINKS pakt het eerste teken van "4520" en geeft "4". Dat is tekst en niet het getal 4, want LINKS geeft altijd tekst.
  4. SCHAKELEN heeft nu "4" als expressie. Excel vergelijkt met "1": nee. Excel vergelijkt met "4": ja, dus de functie geeft de tekst Bedrijfskosten.
  5. Bij 9900 in A6 is het eerste cijfer "9". Dat is gelijk aan geen van "1", "4" en "8", dus SCHAKELEN geeft het laatste argument zonder bijbehorend resultaat: Te beoordelen.
  6. Zonder SPATIES.WISSEN zou LINKS voor A2 een spatie geven. Een spatie komt met niets overeen, dus de rekening zou ongemerkt bij Te beoordelen belanden.

Let op: Schrijf je 4 zonder aanhalingstekens, dan komt geen enkele rekening overeen, want de tekst "4" is niet het getal 4. Elke rij valt terug op de standaardwaarde en toont Te beoordelen. Er is geen foutmelding, alleen een kolom die overal fout is.

Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant

Waarom het werkt

SPATIES.WISSEN en LINKS maken van een rommelig rekeningnummer een schone sleutel van één teken, en SCHAKELEN koppelt die sleutel aan een onderdeel. De sleutels staan tussen aanhalingstekens omdat LINKS tekst geeft, en SCHAKELEN "4" en 4 als verschillende waarden ziet.

Meer om op te letten

  • SPATIES.WISSEN haalt een harde spatie (TEKEN(160)) niet weg, en exports bevatten die vaak. Het eerste teken is dan geen cijfer en de rekening valt terug op de standaardwaarde. Controleer met LENGTE een paar rijen die er goed uitzien.

Varianten

=SCHAKELEN(WAARDE(LINKS(SPATIES.WISSEN(A2), 1)), 1, "Balans", 4, "Bedrijfskosten", 8, "Omzet", "Te beoordelen")
=SCHAKELEN(WAARDE(LINKS(SPATIES.WISSEN(A2); 1)); 1; "Balans"; 4; "Bedrijfskosten"; 8; "Omzet"; "Te beoordelen")

Zet het eerste teken met WAARDE om in een getal en schrijf de sleutels zonder aanhalingstekens. Kies dit als de sleutels ook in andere numerieke kolommen worden gebruikt.

ExpertExcel 2021 of nieuwer (Dit voorbeeld vereist Excel 2021 of nieuwer)

De btw van alle regels in één formule narekenen

Je test de btw-aangifte van een cliënt. De kolommen zijn:

  • B: de btw-code van elke factuurregel (H voor 21%, L voor 9%, N voor 0%)
  • C: het nettobedrag
  • D: de geboekte btw

Eén cel moet de btw van alle regels narekenen uit de code en het nettobedrag, het totaal vergelijken met de geboekte btw en het verschil tonen. Een code die niet in de lijst staat moet de berekening stoppen en mag niet als 0% meetellen.

Fragment van het werkblad: in F2 staat de formule
RijABCDEFG
1RegelBtw-codeNettobedragGeboekte btwVerschil
211H€1,000.00€ 1.000,00€210.00€ 210,00€1.00€ 1,00=LET( btwcode, B2:B6, netto, C2:C6, geboekt, D2:D6, tarief, SCHAKELEN(btwcode, "H", 0.21, "L", 0.09, "N", 0, NB()), AFRONDEN(SOM(geboekt) - SOM(netto * tarief), 2) )=LET( btwcode; B2:B6; netto; C2:C6; geboekt; D2:D6; tarief; SCHAKELEN(btwcode; "H"; 0,21; "L"; 0,09; "N"; 0; NB()); AFRONDEN(SOM(geboekt) - SOM(netto * tarief); 2) )
322L€2,500.00€ 2.500,00€225.00€ 225,00
433H€840.00€ 840,00€176.40€ 176,40
544N€1,200.00€ 1.200,00€0.00€ 0,00
655L€600.00€ 600,00€55.00€ 55,00
7
Formulecel (F2)Invoer

Formule in F2

=LET(
  btwcode, B2:B6,
  netto, C2:C6,
  geboekt, D2:D6,
  tarief, SCHAKELEN(btwcode, "H", 0.21, "L", 0.09, "N", 0, NB()),
  AFRONDEN(SOM(geboekt) - SOM(netto * tarief), 2)
)
=LET(
  btwcode; B2:B6;
  netto; C2:C6;
  geboekt; D2:D6;
  tarief; SCHAKELEN(btwcode; "H"; 0,21; "L"; 0,09; "N"; 0; NB());
  AFRONDEN(SOM(geboekt) - SOM(netto * tarief); 2)
)

Resultaat: €1.00€ 1,00

Stap voor stap
  1. LET geeft de drie bereiken een naam en rekent nog niets uit: btwcode is B2:B6 (H, L, H, N, L), netto is C2:C6 en geboekt is D2:D6.
  2. Voor tarief krijgt SCHAKELEN het hele bereik als expressie. De helppagina van Microsoft beschrijft hier geen bereik; in Excel 2021 en Microsoft 365 werkt de functie naar verwachting de vijf codes een voor een af en geeft ze vijf tarieven: 0,21, 0,09, 0,21, 0 en 0,09. De standaardwaarde NB() blijft ongebruikt, omdat elke code in de lijst staat.
  3. netto * tarief vermenigvuldigt plek voor plek: 1,0001.000 × 0,21 = 210; 2,5002.500 × 0,09 = 225; 840 × 0,21 = 176,4; 1,2001.200 × 0 = 0; 600 × 0,09 = 54. SOM telt ze op tot 665,4, de btw die geboekt had moeten zijn.
  4. SOM(geboekt) telt de geboekte btw op: 210 + 225 + 176,4 + 0 + 55 = 666,4.
  5. Het verschil is 666,4 - 665,4 = 1. AFRONDEN op 2 decimalen haalt het piepkleine restje weg dat de binaire opslag van 0,09 en 0,21 kan achterlaten, zodat de cel 1,00 toont. Het verschil zit in regel 5: 55 geboekt tegen 54 verwacht.
  6. Verander één code in X en NB() wordt het tarief van die regel. Het hele resultaat wordt #N/B: een duidelijke stop, geen stil tarief van 0%.

Let op: De omgekeerde fout: 0 als standaardwaarde in plaats van NB(). Het lijkt veilig, maar een nieuwe of verkeerd getypte code wordt dan zonder waarschuwing met 0% belast, en het verschil dat je ziet is de btw van die ene regel.

Meer over dit voorbeeld: waarom het werkt, nog 2 valkuilen, 2 varianten

Waarom het werkt

Hier krijgt SCHAKELEN een bereik als expressie en antwoordt de functie in Excel 2021 en later naar verwachting voor elke cel ervan, dus één aanroep vervangt een hulpkolom. De helppagina van Microsoft beschrijft dit gebruik niet, dus test het in je eigen Excel voordat je erop vertrouwt. Met NB() als standaardwaarde wordt een onbekende code een foutwaarde die door SOM heen werkt en niet te missen is.

Zet tarieven niet zo vast in de formule als ze per periode wijzigen of door iemand anders worden beheerd: zet ze in een tabel en zoek ze op met X.ZOEKEN, zodat het tarief op één plek staat.

Meer om op te letten

  • Excel 2019 heeft SCHAKELEN maar geen dynamische matrices. Verwacht daar niet dat een bereik als expressie cel voor cel wordt doorgerekend, en LET ontbreekt ook. Deze opbouw vraagt Excel 2021 of Microsoft 365.
  • Een code met een spatie aan het eind, zoals "H ", is niet gelijk aan H. Hier geeft dat #N/B, en dat is precies de bedoeling van NB(): maak de gegevens schoon in plaats van de regel er stil doorheen te laten glippen.

Varianten

=SCHAKELEN(B2:B6, "H", 0.21, "L", 0.09, "N", 0, NB())
=SCHAKELEN(B2:B6; "H"; 0,21; "L"; 0,09; "N"; 0; NB())

Alleen de tarieven, een per regel, die vanuit de cel naar beneden overlopen. Gebruik dit om te zien welke regel welk tarief krijgt voordat je de totalen toevoegt.

=AFRONDEN(SOM(D2:D6) - SOMPRODUCT(C2:C6, (B2:B6 = "H") * 0.21 + (B2:B6 = "L") * 0.09), 2)
=AFRONDEN(SOM(D2:D6) - SOMPRODUCT(C2:C6; (B2:B6 = "H") * 0,21 + (B2:B6 = "L") * 0,09); 2)

Werkt in elke versie, maar elke andere code, ook een verkeerd getypte, telt als 0%. Kies dit alleen als de codes elders bewaakt worden.

Veelgemaakte fouten

Veelgemaakte fouten
SymptoomOorzaakOplossing
#N/B of een fout resultaat bij >1000Een vergelijking als >1000 staat als waarde in de formule, en de cel toont #N/B of een verkeerd resultaat.SCHAKELEN toetst alleen op gelijkheid. Gebruik ALS.VOORWAARDEN voor voorwaarden, of zoek de klasse op in een tabel met X.ZOEKEN.
#N/B bij een code die niet in de lijst staatEr is geen standaardwaarde, en een code die niet in de lijst staat geeft #N/B.Voeg een laatste argument zonder bijbehorend resultaat toe voor het alternatief, of laat de foutwaarde staan als onbekende codes het werk juist moeten stoppen.
Een gelijk ogende code valt onder de standaardwaardeDe code lijkt gelijk maar is het niet: een spatie aan het eind, of een getal dat als tekst is opgeslagen, waardoor de waarde bij de standaardwaarde terechtkomt.Maak de expressie schoon met SPATIES.WISSEN, of zet haar om met WAARDE, zodat ze hetzelfde type en dezelfde tekens heeft als de waarden in de formule.
Codes zonder overeenkomst tonen ineens een waardeEen resultaat is weggelaten, en elke code zonder overeenkomst toont ineens een waarde in plaats van #N/B.Tel de argumenten na de expressie: een even aantal betekent volledige paren, een oneven aantal betekent dat het laatste de standaardwaarde is.