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

ALS.NB

IFNA in Engelstalige Excel

Geeft een vervangende waarde naar keuze als een formule #N/B oplevert, en laat elk ander resultaat ongewijzigd door, ook andere foutwaarden.

Moeilijkheidsgraad 2 van 5. Twee argumenten en geen modi, maar de waarde van de functie zit in wat hij niet opvangt: elke foutwaarde behalve #N/B blijft zichtbaar.

Laatst bijgewerkt: 13 oktober 2026

Bekijk de uitgewerkte voorbeelden

Fragment van het werkblad: in E2 staat de formule
RijABCDE
1Btw-codeTariefBtw-code op de regelTarief
2H2121%21%H190%0%=ALS.NB(VERT.ZOEKEN(D2, A2:B4, 2, ONWAAR), 0)=ALS.NB(VERT.ZOEKEN(D2; A2:B4; 2; ONWAAR); 0)
3L99%9%
4V00%0%
Formulecel (E2)Invoer

Resultaat: 0%

=ALS.NB(VERT.ZOEKEN(D2, A2:B4, 2, ONWAAR), 0)
=ALS.NB(VERT.ZOEKEN(D2; A2:B4; 2; ONWAAR); 0)

Wat ALS.NB doet en wanneer je het gebruikt

Wat het doet: het vervangt alleen de foutwaarde #N/B door een waarde die je zelf kiest, bijvoorbeeld de tekst Niet in lijst bij een klant die niet voorkomt.

Wanneer je het gebruikt: rond elke zoekopdracht waarbij "niet gevonden" een normale uitkomst is, zoals een onbekende code of een product dat niet op de prijslijst staat. Anders dan ALS.FOUT laat het andere foutwaarden zoals #VERW! met rust, zodat echte problemen zichtbaar blijven.

De twee grootste voordelen:

  • Alleen #N/B: een #VERW! of #WAARDE! blijft zichtbaar, waar ALS.FOUT die zou verbergen.
  • Duidelijke bedoeling: wie de formule leest, ziet meteen dat een ontbrekende waarde wordt verwacht.

Hoe Excel de functie berekent

Excel berekent eerst waarde. Is het resultaat #N/B, dan geeft ALS.NB in plaats daarvan waarde_indien_niet_bekend terug. Is het resultaat iets anders, een getal, tekst, een datum of een andere foutwaarde, dan geeft ALS.NB het ongewijzigd door.

Is waarde een matrix, dan controleert ALS.NB elk element apart, dus één ontbrekend item vervangt niet het hele resultaat.

Let op: ALS.NB vangt alleen #N/B op. Een deling door nul of een andere foutwaarde komt ongewijzigd door; test de deler dan met ALS, of gebruik ALS.FOUT zodra je zeker weet dat er geen andere fout kan optreden.

Denkmodel

Een filter in een leiding dat maar één soort deeltje tegenhoudt. #N/B wordt opgevangen en vervangen; al het andere, goede resultaten en andere foutwaarden, stroomt ongehinderd door.

Begrippen op deze pagina: foutwaarde, matrix

ALS.NB(waarde, waarde_indien_niet_bekend)
ALS.NB(waarde; waarde_indien_niet_bekend)
Argumenten
ArgumentSoortBetekenis
waardeVerplichtDe formule of waarde die op #N/B wordt gecontroleerd.
waarde_indien_niet_bekendVerplichtWat er in plaats van #N/B wordt teruggegeven.

Geeft terug:Het resultaat van waarde, of waarde_indien_niet_bekend als waarde #N/B is

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

Btw herrekenen met een onbekende btw-code op 0%

Je herrekent de btw op het verkoopdagboek (VRK) van Veldhuis Installatie BV. De btw-codetabel van de klant geeft het tarief per code.

Een boeking met een code die niet in de tabel staat, moet tarief 0 krijgen in plaats van een foutwaarde, zodat de herberekende btw-kolom blijft optellen en het verschil met de geboekte btw je de regel aanwijst die je moet onderzoeken.

Fragment van het werkblad: in E2 staat de formule
RijABCDEF
1Btw-codeTariefBtw-code op de regelTarief
2H2121%21%H190%0%=ALS.NB(VERT.ZOEKEN(D2, A2:B4, 2, ONWAAR), 0)=ALS.NB(VERT.ZOEKEN(D2; A2:B4; 2; ONWAAR); 0)
3L99%9%
4V00%0%
5
Formulecel (E2)Invoer

Formule in E2

=ALS.NB(VERT.ZOEKEN(D2, A2:B4, 2, ONWAAR), 0)
=ALS.NB(VERT.ZOEKEN(D2; A2:B4; 2; ONWAAR); 0)

Resultaat: 0%0%

Stap voor stap
  1. Excel berekent eerst waarde: VERT.ZOEKEN zoekt D2, H19, in A2:A4 met een exacte overeenkomst.
  2. H21, nee (bijna, maar niet hetzelfde); L9, nee; V0, nee. VERT.ZOEKEN komt aan het eind zonder overeenkomst en geeft #N/B.
  3. ALS.NB ziet #N/B en geeft in plaats daarvan waarde_indien_niet_bekend terug: 0.
  4. De cel toont 0%, dus een herberekening zoals nettobedrag × tarief geeft 0 btw voor deze regel in plaats van een foutwaarde. Naast de geboekte btw valt het verschil op.
  5. Typ L9 in D2. VERT.ZOEKEN vindt de code in de tweede rij en levert 0,09 op, en ALS.NB laat dat ongewijzigd door: 9%.

Let op: Tarief 0 is ook het echte tarief van code V0. Een onbekende code en een code met nultarief zien er in de tariefkolom nu hetzelfde uit; controleer het verschil met de geboekte btw, of test de code met AANTAL.ALS, voordat je een regel accepteert.

Meer over dit voorbeeld: waarom het werkt

Waarom het werkt

ALS.NB grijpt alleen in als de zoekopdracht 'niet gevonden' meldt. Door een getal terug te geven in plaats van tekst, blijft de kolom numeriek, en blijven de herberekende btw en het totaal van de verschillen werken.

Halfgevorderd

Grootboek en ouderdomsanalyse vergelijken, niet-vermelde facturen melden

Je vergelijkt het saldo per factuur in het grootboek met de ouderdomsanalyse debiteuren die Veldhuis Installatie BV heeft aangeleverd. Een factuur die niet op de ouderdomsanalyse staat, moet 'Niet op lijst' tonen.

Eén regel op de ouderdomsanalyse heeft de tekst 'nog af te stemmen' in plaats van een bedrag, en dat probleem moet zichtbaar blijven, want het vraagt om een andere actie: navraag bij de klant.

Fragment van het werkblad: in G2 staat de formule
RijABCDEFGH
1FactuurnummerRelatieOpenstaand bedragFactuurnummerSaldo grootboekVerschil
225-3101D1001€12,100.00€ 12.100,0025-3099€5,000.00€ 5.000,00Niet op lijst=ALS.NB(F2 - VERT.ZOEKEN(E2, $A$2:$C$6, 3, ONWAAR), "Niet op lijst")=ALS.NB(F2 - VERT.ZOEKEN(E2; $A$2:$C$6; 3; ONWAAR); "Niet op lijst")
325-3108D1004€4,537.50€ 4.537,5025-3115€2,420.00€ 2.420,00
425-3115D1007nog af te stemmen25-3108€4,600.00€ 4.600,00
525-3122D1002€8,470.00€ 8.470,00
625-3130D1009€1,815.00€ 1.815,00
7
Formulecel (G2)InvoerOpmerking: De formule staat in G2 en is doorgekopieerd naar G4.

Formule in G2

=ALS.NB(F2 - VERT.ZOEKEN(E2, $A$2:$C$6, 3, ONWAAR), "Niet op lijst")
=ALS.NB(F2 - VERT.ZOEKEN(E2; $A$2:$C$6; 3; ONWAAR); "Niet op lijst")

Resultaat: Niet op lijst

Stap voor stap
  1. In G2 zoekt VERT.ZOEKEN 25-3099 in A2:A6. 25-3101, nee; 25-3108, nee; enzovoort tot het eind. De factuur staat er niet in, dus VERT.ZOEKEN geeft #N/B.
  2. F2 min #N/B is nog steeds #N/B. ALS.NB vangt het op en geeft Niet op lijst.
  3. In G3 vindt VERT.ZOEKEN 25-3115 in de derde rij en geeft de tekst nog af te stemmen. 2420 min tekst geeft #WAARDE!.
  4. #WAARDE! is geen #N/B, dus ALS.NB laat het door. G3 toont #WAARDE!, en dat vertelt je dat de ouderdomsanalyse het probleem is, niet het factuurnummer.
  5. In G4 vindt VERT.ZOEKEN 25-3108 en geeft 4537,5. 4600 - 4537,5 = 62,5, en ALS.NB laat dat door: een verschil van 62,50 om te verklaren.
  6. Met ALS.FOUT in plaats van ALS.NB zou G3 ook Niet op lijst tonen, en zou je zoeken naar een factuur die wel op de lijst staat.

Let op: Zonder de $-tekens zou de kopie in G4 zoeken in A4:C8, dat pas onder 25-3108 begint. G4 zou dan Niet op lijst tonen voor een factuur die wel op de lijst staat.

Meer over dit voorbeeld: waarom het werkt, 1 variant

Waarom het werkt

Elke soort foutwaarde betekent iets anders: #N/B zegt 'de factuur staat niet op de lijst', #WAARDE! zegt 'de gegevens konden niet in de berekening worden gebruikt'. ALS.NB vervangt alleen de eerste, dus elke regel vertelt welke vervolgactie hij nodig heeft.

Varianten

=F2 - ALS.NB(VERT.ZOEKEN(E2, $A$2:$C$6, 3, ONWAAR), "Niet op lijst")
=F2 - ALS.NB(VERT.ZOEKEN(E2; $A$2:$C$6; 3; ONWAAR); "Niet op lijst")

Geen goed alternatief: de melding wordt van F2 afgetrokken en wordt #WAARDE!. Houd de berekening binnen ALS.NB, of geef een getal terug als vervangende waarde.

Gevorderd

Een rekening koppelen op nieuw nummer, daarna op oud nummer

Veldhuis Installatie BV heeft in de loop van het jaar het rekeningschema gewijzigd, dus de XAF-auditfile bevat zowel nieuwe als oude grootboekrekeningnummers. Om een rekening aan de bijbehorende jaarrekeningpost te koppelen, moet de zoekopdracht eerst de kolom met nieuwe rekeningen proberen en alleen als dat mislukt de kolom met oude rekeningen, en 'Onbekende rekening' tonen als geen van beide overeenkomt.

Fragment van het werkblad: in F2 staat de formule
RijABCDEFG
1Nieuwe rekeningOude rekeningJaarrekeningpostRekening in boeking4510
280008100OmzetJaarrekeningpostHuisvestingskosten=ALS.NB(INDEX(C2:C7, VERGELIJKEN(F1, A2:A7, 0)), ALS.NB(INDEX(C2:C7, VERGELIJKEN(F1, B2:B7, 0)), "Onbekende rekening"))=ALS.NB(INDEX(C2:C7; VERGELIJKEN(F1; A2:A7; 0)); ALS.NB(INDEX(C2:C7; VERGELIJKEN(F1; B2:B7; 0)); "Onbekende rekening"))
340004100Personeelskosten
445004510Huisvestingskosten
511001110Liquide middelen
61300Debiteuren
716001610Crediteuren
8
Formulecel (F2)Invoer

Formule in F2

=ALS.NB(INDEX(C2:C7, VERGELIJKEN(F1, A2:A7, 0)), ALS.NB(INDEX(C2:C7, VERGELIJKEN(F1, B2:B7, 0)), "Onbekende rekening"))
=ALS.NB(INDEX(C2:C7; VERGELIJKEN(F1; A2:A7; 0)); ALS.NB(INDEX(C2:C7; VERGELIJKEN(F1; B2:B7; 0)); "Onbekende rekening"))

Resultaat: Huisvestingskosten

Stap voor stap
  1. Excel berekent de eerste waarde. VERGELIJKEN zoekt 4510 in A2:A7, de nieuwe rekeningen. Geen ervan komt overeen, dus VERGELIJKEN geeft #N/B.
  2. INDEX krijgt #N/B als rijnummer en geeft die #N/B door. De buitenste ALS.NB ziet #N/B en berekent dus zijn waarde_indien_niet_bekend, en dat is de tweede ALS.NB.
  3. Daarin zoekt VERGELIJKEN 4510 in B2:B7, de oude rekeningen: 8100, nee; 4100, nee; 4510, ja. Positie 3.
  4. INDEX geeft de derde cel van C2:C7 terug, dat is C4: Huisvestingskosten. Dat is geen foutwaarde, dus beide ALS.NB-functies geven het door.
  5. Typ 8000 in F1: de eerste VERGELIJKEN vindt het op positie 1, INDEX geeft Omzet, en de tweede zoekopdracht is niet nodig.
  6. Typ 9999: beide VERGELIJKEN-functies geven #N/B, en de binnenste ALS.NB geeft Onbekende rekening.

Let op: Is een nieuw rekeningnummer toevallig gelijk aan een oud nummer van een andere rekening, dan slaagt de eerste zoekopdracht en geeft hij de verkeerde jaarrekeningpost. Niets wijst op de verwarring; controleer dat de twee kolommen elkaar niet kunnen overlappen.

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

Waarom het werkt

waarde_indien_niet_bekend kan een hele formule zijn, dus een tweede ALS.NB wordt de vervanging van de eerste en vormt een keten van pogingen in een vaste volgorde. Omdat alleen #N/B de zoektocht naar de volgende stap stuurt, stopt een andere fout in de eerste zoekopdracht, zoals #VERW! door een verwijderde kolom, de keten op een plek waar je het ziet.

Meer om op te letten

  • Zijn de rekeningnummers uit de auditfile als getal geïmporteerd (4510) terwijl de koppeltabel tekst bevat, dan komt geen enkele rekening ooit overeen en toont elke rekening Onbekende rekening.

Varianten

=X.ZOEKEN(F1, A2:A7, C2:C7, X.ZOEKEN(F1, B2:B7, C2:C7, "Onbekende rekening"))
=X.ZOEKEN(F1; A2:A7; C2:C7; X.ZOEKEN(F1; B2:B7; C2:C7; "Onbekende rekening"))

Excel 2021 en later: het argument indien_niet_gevonden van de eerste X.ZOEKEN bevat de tweede zoekopdracht, zonder ALS.NB.

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

Totaal verschil met de saldibalans, ontbrekende rekeningen op nul

Je vergelijkt vier grootboeksaldi uit de XAF-auditfile met de saldibalans van Veldhuis Installatie BV en wilt de som van de absolute verschillen in één cel.

Rekening 1700 staat niet op de saldibalans van de klant; voor deze schatting telt de specificatie als nul, zodat het hele grootboeksaldo een verschil is, in plaats van dat het totaal onbruikbaar wordt. Elk ander probleem in de saldibalans moet nog steeds een foutwaarde geven.

Fragment van het werkblad: in H2 staat de formule
RijABCDEFGHI
1RekeningOmschrijvingSaldibalansRekeningSaldo grootboekTotaal verschil
21100Bank€48,250.00€ 48.250,001300€214,900.00€ 214.900,00€7,450.00€ 7.450,00=LET( rekeningen, E2:E5, grootboek, F2:F5, specificatie, ALS.NB(X.ZOEKEN(rekeningen, A2:A6, C2:C6), 0), SOM(ABS(grootboek - specificatie)) )=LET( rekeningen; E2:E5; grootboek; F2:F5; specificatie; ALS.NB(X.ZOEKEN(rekeningen; A2:A6; C2:C6); 0); SOM(ABS(grootboek - specificatie)) )
31300Debiteuren€212,400.00€ 212.400,001700€3,150.00€ 3.150,00
41600Crediteuren€96,800.00€ 96.800,004000€383,200.00€ 383.200,00
54000Personeelskosten€385,000.00€ 385.000,001100€48,250.00€ 48.250,00
68000Omzet€1,450,000.00€ 1.450.000,00
7
Formulecel (H2)Invoer

Formule in H2

=LET(
  rekeningen, E2:E5,
  grootboek, F2:F5,
  specificatie, ALS.NB(X.ZOEKEN(rekeningen, A2:A6, C2:C6), 0),
  SOM(ABS(grootboek - specificatie))
)
=LET(
  rekeningen; E2:E5;
  grootboek; F2:F5;
  specificatie; ALS.NB(X.ZOEKEN(rekeningen; A2:A6; C2:C6); 0);
  SOM(ABS(grootboek - specificatie))
)

Resultaat: €7,450.00€ 7.450,00

Stap voor stap
  1. LET geeft de geselecteerde regels een naam: rekeningen is E2:E5 en grootboek is F2:F5.
  2. X.ZOEKEN krijgt alle vier de rekeningen tegelijk en geeft vier resultaten: 1300 geeft 212,400212.400, 1700 staat niet in A2:A6 en geeft #N/B, 4000 geeft 385,000385.000, 1100 geeft 48,25048.250.
  3. ALS.NB controleert elk element apart. Alleen het tweede is #N/B, dus specificatie wordt {212,400212.400; 0; 385,000385.000; 48,25048.250}.
  4. grootboek - specificatie trekt element voor element af: 214,900214.900 - 212,400212.400 = 2500, 3150 - 0 = 3150, 383,200383.200 - 385,000385.000 = -1800, 48,25048.250 - 48,25048.250 = 0.
  5. ABS haalt de tekens weg, wat {2500; 3150; 1800; 0} geeft, en SOM telt ze op: 2500 + 3150 + 1800 + 0 = 7450.
  6. Stel nu dat C5 de tekst n.v.t. bevatte. X.ZOEKEN zou die tekst teruggeven voor rekening 4000, ALS.NB zou hem laten staan, 383,200383.200 min tekst zou #WAARDE! zijn, en het totaal zou #WAARDE! tonen in plaats van een bedrag dat te laag is.

Let op: De omgekeerde fout: ALS.FOUT in plaats van ALS.NB. Bij deze gegevens is het resultaat dezelfde 7450, dus het lijkt te kloppen, maar een foutwaarde in de saldokolom (zoals #WAARDE! of #VERW!) zou dan ook als nul tellen, en het verschil zou zonder waarschuwing verkeerd uitvallen.

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

Waarom het werkt

ALS.NB werkt per element op matrices, dus het herstelt precies de rekeningen die ontbreken en laat de rest zoals hij is.

Gebruik deze opbouw niet voor een definitieve aansluiting die je als controle-informatie vastlegt: daar moet een rekening die op de saldibalans ontbreekt worden onderzocht en niet stilletjes als specificatie van nul tellen.

Het alternatief is het argument indien_niet_gevonden van X.ZOEKEN, X.ZOEKEN(rekeningen; A2:A6; C2:C6; 0): dat vangt alleen 'niet gevonden' op, terwijl ALS.NB ook een #N/B vervangt die uit de saldokolom zelf komt, bijvoorbeeld van een formule eerder in de keten. Kies indien_niet_gevonden als zo'n #N/B in de gegevens zichtbaar moet blijven.

Meer om op te letten

  • Het totaal vertelt niet hoeveel rekeningen als nul zijn behandeld. Voeg een controlecel toe zoals SOM(--ISNB(X.ZOEKEN(E2:E5; A2:A6; C2:C6))), die hier 1 geeft.
  • rekeningen en grootboek moeten evenveel rijen hebben. E2:E5 tegenover F2:F6 geeft #N/B op de laatste positie van de aftrekking, en daar komt ALS.NB niet bij, want het staat erbuiten.

Varianten

=SOMPRODUCT(ABS(F2:F5 - ALS.NB(X.ZOEKEN(E2:E5, A2:A6, C2:C6), 0)))
=SOMPRODUCT(ABS(F2:F5 - ALS.NB(X.ZOEKEN(E2:E5; A2:A6; C2:C6); 0)))

Zonder LET: SOMPRODUCT telt de absolute verschillen op in één stap. Korter, maar lastiger te lezen als de regel verandert.

Veelgemaakte fouten

Veelgemaakte fouten
SymptoomOorzaakOplossing
Een kapotte zoekopdracht toont Niet gevondenALS.FOUT staat om een zoekopdracht en een #VERW! door een verwijderde kolom verschijnt als 'Niet gevonden', zodat niemand de formule herstelt.Gebruik ALS.NB bij zoekopdrachten. Een ontbrekende waarde wordt jouw melding; een kapotte formule blijft zichtbaar.
Een totaal eronder geeft #WAARDE!waarde_indien_niet_bekend is tekst zoals "geen", en een totaal verderop geeft #WAARDE! of slaat de rij over.Als er met het resultaat gerekend wordt, geef dan 0 (of een ander getal) terug in plaats van tekst.
Een #N/B elders wordt ook verborgenALS.NB staat om een hele berekening, en een #N/B uit een ander deel van de formule wordt ook vervangen.Zet ALS.NB alleen rond de zoekopdracht die terecht niets kan vinden, zo dicht mogelijk eromheen.