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.
Laatst bijgewerkt: 13 oktober 2026
| Rij | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Btw-code | Tarief | Btw-code op de regel | Tarief | |
| 2 | H21 | 21%21% | H19 | 0%0%=ALS.NB(VERT.ZOEKEN(D2, A2:B4, 2, ONWAAR), 0)=ALS.NB(VERT.ZOEKEN(D2; A2:B4; 2; ONWAAR); 0) | |
| 3 | L9 | 9%9% | |||
| 4 | V0 | 0%0% |
Veeg opzij om alle kolommen te zien
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)
| Argument | Soort | Betekenis |
|---|---|---|
waarde | Verplicht | De formule of waarde die op #N/B wordt gecontroleerd. |
waarde_indien_niet_bekend | Verplicht | Wat 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.
| Rij | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Btw-code | Tarief | Btw-code op de regel | Tarief | ||
| 2 | H21 | 21%21% | H19 | 0%0%=ALS.NB(VERT.ZOEKEN(D2, A2:B4, 2, ONWAAR), 0)=ALS.NB(VERT.ZOEKEN(D2; A2:B4; 2; ONWAAR); 0) | ||
| 3 | L9 | 9%9% | ||||
| 4 | V0 | 0%0% | ||||
| 5 |
Veeg opzij om alle kolommen te zien
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
- Excel berekent eerst waarde: VERT.ZOEKEN zoekt
D2,H19, inA2:A4met een exacte overeenkomst. H21, nee (bijna, maar niet hetzelfde);L9, nee;V0, nee. VERT.ZOEKEN komt aan het eind zonder overeenkomst en geeft #N/B.- ALS.NB ziet #N/B en geeft in plaats daarvan waarde_indien_niet_bekend terug: 0.
- 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.
- Typ
L9inD2. 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.
| Rij | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 1 | Factuurnummer | Relatie | Openstaand bedrag | Factuurnummer | Saldo grootboek | Verschil | ||
| 2 | 25-3101 | D1001 | €12,100.00€ 12.100,00 | 25-3099 | €5,000.00€ 5.000,00 | Niet 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") | ||
| 3 | 25-3108 | D1004 | €4,537.50€ 4.537,50 | 25-3115 | €2,420.00€ 2.420,00 | |||
| 4 | 25-3115 | D1007 | nog af te stemmen | 25-3108 | €4,600.00€ 4.600,00 | |||
| 5 | 25-3122 | D1002 | €8,470.00€ 8.470,00 | |||||
| 6 | 25-3130 | D1009 | €1,815.00€ 1.815,00 | |||||
| 7 |
Veeg opzij om alle kolommen te zien
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
- In
G2zoekt VERT.ZOEKEN25-3099inA2:A6.25-3101, nee;25-3108, nee; enzovoort tot het eind. De factuur staat er niet in, dus VERT.ZOEKEN geeft #N/B. F2min #N/B is nog steeds #N/B. ALS.NB vangt het op en geeft Niet op lijst.- In
G3vindt VERT.ZOEKEN25-3115in de derde rij en geeft de tekst nog af te stemmen. 2420 min tekst geeft #WAARDE!. - #WAARDE! is geen #N/B, dus ALS.NB laat het door.
G3toont #WAARDE!, en dat vertelt je dat de ouderdomsanalyse het probleem is, niet het factuurnummer. - In
G4vindt VERT.ZOEKEN25-3108en geeft 4537,5. 4600 - 4537,5 = 62,5, en ALS.NB laat dat door: een verschil van 62,50 om te verklaren. - Met ALS.FOUT in plaats van ALS.NB zou
G3ook 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.
| Rij | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 1 | Nieuwe rekening | Oude rekening | Jaarrekeningpost | Rekening in boeking | 4510 | ||
| 2 | 8000 | 8100 | Omzet | Jaarrekeningpost | Huisvestingskosten=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")) | ||
| 3 | 4000 | 4100 | Personeelskosten | ||||
| 4 | 4500 | 4510 | Huisvestingskosten | ||||
| 5 | 1100 | 1110 | Liquide middelen | ||||
| 6 | 1300 | Debiteuren | |||||
| 7 | 1600 | 1610 | Crediteuren | ||||
| 8 |
Veeg opzij om alle kolommen te zien
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
- Excel berekent de eerste waarde. VERGELIJKEN zoekt 4510 in
A2:A7, de nieuwe rekeningen. Geen ervan komt overeen, dus VERGELIJKEN geeft #N/B. - 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.
- Daarin zoekt VERGELIJKEN 4510 in
B2:B7, de oude rekeningen: 8100, nee; 4100, nee; 4510, ja. Positie 3. - INDEX geeft de derde cel van
C2:C7terug, dat isC4: Huisvestingskosten. Dat is geen foutwaarde, dus beide ALS.NB-functies geven het door. - Typ 8000 in
F1: de eerste VERGELIJKEN vindt het op positie 1, INDEX geeft Omzet, en de tweede zoekopdracht is niet nodig. - 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.
| Rij | A | B | C | D | E | F | G | H | I |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Rekening | Omschrijving | Saldibalans | Rekening | Saldo grootboek | Totaal verschil | |||
| 2 | 1100 | Bank | €48,250.00€ 48.250,00 | 1300 | €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)) ) | |||
| 3 | 1300 | Debiteuren | €212,400.00€ 212.400,00 | 1700 | €3,150.00€ 3.150,00 | ||||
| 4 | 1600 | Crediteuren | €96,800.00€ 96.800,00 | 4000 | €383,200.00€ 383.200,00 | ||||
| 5 | 4000 | Personeelskosten | €385,000.00€ 385.000,00 | 1100 | €48,250.00€ 48.250,00 | ||||
| 6 | 8000 | Omzet | €1,450,000.00€ 1.450.000,00 | ||||||
| 7 |
Veeg opzij om alle kolommen te zien
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
- LET geeft de geselecteerde regels een naam: rekeningen is
E2:E5en grootboek isF2:F5. - X.ZOEKEN krijgt alle vier de rekeningen tegelijk en geeft vier resultaten: 1300 geeft 212,400212.400, 1700 staat niet in
A2:A6en geeft #N/B, 4000 geeft 385,000385.000, 1100 geeft 48,25048.250. - 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}.
- 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.
- ABS haalt de tekens weg, wat {2500; 3150; 1800; 0} geeft, en SOM telt ze op: 2500 + 3150 + 1800 + 0 = 7450.
- Stel nu dat
C5de 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:E5tegenoverF2:F6geeft #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
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
| Een kapotte zoekopdracht toont Niet gevonden | ALS.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 verborgen | ALS.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. |