DAG
DAY in Engelstalige Excel
Geeft het dagnummer van de maand, een getal van 1 tot en met 31, uit een datum.
Laatst bijgewerkt: 13 oktober 2026
| Rij | A | B | C |
|---|---|---|---|
| 1 | Boekstuk | Boekdatum | Dag |
| 2 | 25-1301 | 29-12-2025 | 2929=DAG(B2)=DAG(B2) |
| 3 | 25-1302 | 31-12-2025 | |
| 4 | 25-1303 | 02-01-2026 | |
| 5 | 25-1304 | 15-01-2026 |
Veeg opzij om alle kolommen te zien
Resultaat: 29
=DAG(B2)
=DAG(B2)
Wat DAG doet en wanneer je het gebruikt
Wat het doet: het geeft het dagnummer van de maand, van 1 tot en met 31, van een datum (in Excel een serieel getal), bijvoorbeeld de boekingsdag van een boekstuk.
Wanneer je het gebruikt: voor afgrenzingstests rond een periodeafsluiting, controles op boekingen op ongebruikelijke dagen en terugkerende posten die elke maand op dezelfde dag moeten vallen. Samen met MAAND en JAAR haal je een datum uit elkaar.
Hoe Excel de functie berekent
Excel slaat een datum op als serieel getal, een aantal dagen. DAG zet dat getal om in een kalenderdatum en geeft het dagdeel. Een lege cel geldt als serieel getal 0, en DAG daarvan is 0, zonder foutmelding.
Let op: Een datum die als tekst binnenkomt, wordt met de regio-instelling omgezet: 02-01-2026 is 2 januari in een Nederlandse instelling en 1 februari in een Amerikaanse, en 30-12-2025 is in een Amerikaanse instelling helemaal niet om te zetten (#WAARDE!).
Begrippen op deze pagina: serieel getal, cel
Syntaxis
Officiële documentatie van DAGDAG(serieel_getal)
DAG(serieel_getal)
| Argument | Soort | Betekenis |
|---|---|---|
serieel_getal | Verplicht | De datum waaruit de dag wordt gehaald. |
Geeft terug:Het dagnummer van de maand als geheel getal van 1 tot en met 31
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 boekingsdag van een boekstuk aflezen
In de XAF-auditfile van Veldhuis Installatie BV heeft elk boekstuk een boekdatum. Voor je journaalpostentest wil je het dagnummer waarop elk boekstuk is geboekt, zodat je ziet hoeveel er in de laatste dagen van een periode zijn geboekt.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Boekstuk | Boekdatum | Dag | |
| 2 | 25-1301 | 29-12-2025 | 2929=DAG(B2)=DAG(B2) | |
| 3 | 25-1302 | 31-12-2025 | ||
| 4 | 25-1303 | 02-01-2026 | ||
| 5 | 25-1304 | 15-01-2026 | ||
| 6 |
Veeg opzij om alle kolommen te zien
Formule in C2
=DAG(B2)
=DAG(B2)
Resultaat: 2929
Stap voor stap
- DAG heeft één argument, serieel_getal. Hier is dat
B2, met daarin 29 december 2025. Excel slaat deze datum op als het seriële getal 46020. - Excel zet 46020 om in de kalenderdatum 29 december 2025 en houdt alleen het dagdeel over.
- Het resultaat is 29. De maand en het jaar spelen daarbij geen rol.
- Naar beneden gekopieerd geeft
C331, geeftC42 en geeftC515. Boekstuk25-1303is op 2 januari geboekt, in een andere maand dan de eerste twee, en DAG laat dat niet zien.
Let op: Een dagnummer alleen kan 2 januari niet van 2 december onderscheiden. Speelt de maand een rol, zoals bij een afgrenzingstest, combineer DAG dan met MAAND of JAAR, of toets de hele datum.
Meer over dit voorbeeld: waarom het werkt
Waarom het werkt
Onder de oppervlakte is een datum een aantal dagen, en DAG leest het dagnummer van de kalenderdatum waar dat aantal voor staat. De functie verschuift of rondt niets af, dus het getal is precies wat de datum toont.
Halfgevorderd
De valutadag van bankregels tonen, met een melding bij ontbrekende datums
Voor de afgrenzingstest op het bankafschrift wil je het dagnummer van de valutadatum van elke regel. Eén regel in het uittreksel heeft nog geen valutadatum. Zonder controle maakt DAG van die lege cel een 0 en lijkt de regel een geldige maar vreemde datum te hebben, dus het werkblad moet melden dat de datum ontbreekt.
| Rij | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Regel | Valutadatum | Bedrag | Dag | |
| 2 | B-0211 | 30-12-2025 | €4,200.00€ 4.200,00 | 3030=ALS(B2 = "", "Geen valutadatum", DAG(B2))=ALS(B2 = ""; "Geen valutadatum"; DAG(B2)) | |
| 3 | B-0212 | 31-12-2025 | €1,850.25€ 1.850,25 | ||
| 4 | B-0213 | €960.00€ 960,00 | |||
| 5 | B-0214 | 02-01-2026 | €12,400.00€ 12.400,00 | ||
| 6 | B-0215 | 05-01-2026 | €730.50€ 730,50 | ||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in D2
=ALS(B2 = "","Geen valutadatum", DAG(B2))
=ALS(B2 = "";"Geen valutadatum"; DAG(B2))
Resultaat: 3030
Stap voor stap
- ALS rekent eerst de test uit:
B2= "".B2bevat de datum 30 december 2025, en dat is niet leeg, dus de test is ONWAAR en ALS neemt het derde argument. - DAG(B2) leest het seriële getal 46021, zet het om in 30 december 2025 en geeft het dagdeel: 30.
- Naar beneden gekopieerd geeft
D331. InD4isB4leeg, dus de testB4= "" is WAAR en ALS geeft de tekst Geen valutadatum. DAG wordt voor die rij niet berekend. - Zonder de ALS zou
D40 tonen: een lege cel geldt als serieel getal 0, en het dagdeel daarvan is 0. Niets waarschuwt je dat de datum ontbreekt.D5enD6geven 2 en 5.
Let op: Een cel met een spatie in plaats van een datum is niet gelijk aan lege tekst, dus de cel valt door naar DAG en geeft #WAARDE!. Die fout is tenminste zichtbaar; controleer zulke cellen in het uittreksel.
Meer over dit voorbeeld: waarom het werkt, 1 variant
Waarom het werkt
De vergelijking met lege tekst is WAAR voor een lege cel, dus de controle vangt precies het geval op dat DAG stil afhandelt. ALS berekent alleen de tak die nodig is, dus de beschermde cel komt nooit bij DAG.
Varianten
=ALS(ISLEEG(B2),"Geen valutadatum", DAG(B2))
=ALS(ISLEEG(B2);"Geen valutadatum"; DAG(B2))
ISLEEG ziet alleen een echt lege cel als ontbrekend. Een cel met lege tekst uit een geplakte formule komt bij DAG en geeft #WAARDE!, dus kies deze vorm als het uittreksel schoon is.
Gevorderd
Boekingen op een maandeinde in het weekend markeren
Bij je journaalpostentest verdienen handmatige boekingen op de laatste dag van een maand die op een zaterdag of zondag valt extra aandacht: er is niemand op kantoor om ze goed te keuren. Je hebt één formule nodig die een maandeinde herkent, ongeacht de lengte van de maand, en de dag van de week controleert.
| Rij | A | B | C | D |
|---|---|---|---|---|
| 1 | Boekstuk | Boekdatum | Toets | |
| 2 | 25-0610 | 31-08-2025 | Weekend op maandeinde=ALS(EN(DAG(B2 + 1) = 1, WEEKDAG(B2, 2) > 5), "Weekend op maandeinde", "In orde")=ALS(EN(DAG(B2 + 1) = 1; WEEKDAG(B2; 2) > 5); "Weekend op maandeinde"; "In orde") | |
| 3 | 25-0611 | 30-09-2025 | ||
| 4 | 25-0612 | 18-10-2025 | ||
| 5 | 25-0613 | 30-11-2025 | ||
| 6 | 25-0614 | 31-05-2025 | ||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in C2
=ALS(EN(DAG(B2 + 1) = 1,WEEKDAG(B2, 2) > 5), "Weekend op maandeinde", "In orde")
=ALS(EN(DAG(B2 + 1) = 1;WEEKDAG(B2; 2) > 5); "Weekend op maandeinde"; "In orde")
Resultaat: Weekend op maandeinde
Stap voor stap
- Excel rekent de argumenten van EN van binnen naar buiten uit. In DAG(B2 + 1) is B2 + 1 gelijk aan 31 augustus 2025 plus één dag: 1 september 2025. DAG daarvan is 1, dus de vergelijking = 1 is WAAR. B2 is de laatste dag van zijn maand.
- WEEKDAG(B2; 2) nummert de dagen met maandag als 1. 31 augustus 2025 is een zondag, dus de functie geeft 7, en 7 > 5 is WAAR.
- EN krijgt WAAR en WAAR en geeft WAAR. ALS geeft dan het tweede argument: Weekend op maandeinde.
- Naar beneden gekopieerd:
C3(30 september, een dinsdag) is een maandeinde maar WEEKDAG geeft 2, dus de uitkomst is In orde.C4(18 oktober, een zaterdag) is een weekend maarB4+ 1 is 19 oktober, DAG 19, dus het is geen maandeinde: In orde. C5(30 november, een zondag) geeft Weekend op maandeinde, enC6(31 mei, een zaterdag) ook. Drie van de vijf boekingen vragen om opvolging.
Let op: Een test van DAG(B2) = 31 voor het maandeinde mist ongemerkt 30 september en 30 november: de formule markeert dan alleen de twee boekingen op de 31e en noemt de boeking van 30 november In orde, zonder foutmelding.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant
Waarom het werkt
De dag na elke laatste dag van een maand is de 1e, dus DAG(datum + 1) = 1 herkent maandeinden van 28, 29, 30 en 31 dagen allemaal. Retourtype 2 van WEEKDAG zet zaterdag en zondag op 6 en 7, zodat één vergelijking het weekend vindt. EN vraagt beide voorwaarden voordat de boeking wordt gemarkeerd.
Meer om op te letten
- De test werkt met hele datums. Bevat een uittreksel boekdatums met een tijd, dan komt
B2+ 1 nog steeds op de volgende dag uit, maar de datum inB2moet een echte datum zijn en geen tekst.
Varianten
=ALS(EN(B2 = LAATSTE.DAG(B2,0), WEEKDAG(B2, 2) > 5), "Weekend op maandeinde", "In orde")
=ALS(EN(B2 = LAATSTE.DAG(B2;0); WEEKDAG(B2; 2) > 5); "Weekend op maandeinde"; "In orde")
Hetzelfde resultaat met LAATSTE.DAG in plaats van DAG. Het leest directer, maar faalt als de datum een tijd bevat, terwijl DAG(B2 + 1) = 1 dan nog werkt.
ExpertExcel 2021 of nieuwer (Dit voorbeeld vereist Excel 2021 of nieuwer)
De boekingsdag halen uit een mengeling van echte en tekstdatums
Een bankkoppeling levert boekdatums deels als echte datums en deels als tekst in de indeling dd-mm-jjjj, afhankelijk van het bestand. Je hebt van elke rij het dagnummer nodig, en de uitkomst mag niet veranderen als een collega het werkblad opent met een andere regio-instelling. DAG op de tekstcellen zou #WAARDE! geven, of een andere dag, afhankelijk van de instelling.
| Rij | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Boekstuk | Boekdatum zoals ontvangen | Bedrag | Dag | |
| 2 | 25-0911 | 30-12-2025 | €2,300.00€ 2.300,00 | 3030=LET( ruw, B2, geboekt, ALS(ISGETAL(ruw), ruw, DATUM(RECHTS(ruw, 4), DEEL(ruw, 4, 2), LINKS(ruw, 2))), DAG(geboekt) )=LET( ruw; B2; geboekt; ALS(ISGETAL(ruw); ruw; DATUM(RECHTS(ruw; 4); DEEL(ruw; 4; 2); LINKS(ruw; 2))); DAG(geboekt) ) | |
| 3 | 25-0912 | 29-12-2025 | €845.50€ 845,50 | ||
| 4 | 25-0913 | 02-01-2026 | €15,100.00€ 15.100,00 | ||
| 5 | 25-0914 | 31-12-2025 | €620.00€ 620,00 | ||
| 6 | 25-0915 | 03-01-2026 | €3,875.75€ 3.875,75 | ||
| 7 |
Veeg opzij om alle kolommen te zien
Formule in D2
=LET( ruw,B2, geboekt, ALS(ISGETAL(ruw), ruw, DATUM(RECHTS(ruw, 4), DEEL(ruw, 4, 2), LINKS(ruw, 2))), DAG(geboekt) )
=LET( ruw;B2; geboekt; ALS(ISGETAL(ruw); ruw; DATUM(RECHTS(ruw; 4); DEEL(ruw; 4; 2); LINKS(ruw; 2))); DAG(geboekt) )
Resultaat: 3030
Stap voor stap
- LET leest zijn argumenten in paren: eerst een naam, dan een waarde. ruw wordt
B2, met daarin de tekst30-12-2025. - geboekt is een ALS. ISGETAL(ruw) vraagt of de cel een echte datum bevat, en die is een getal. De cel bevat tekst, dus het antwoord is ONWAAR en ALS neemt het derde argument.
- De tekst wordt op positie geknipt, dus er komt geen regio-instelling aan te pas. RECHTS(ruw; 4) is 2025, DEEL(ruw; 4; 2) begint bij teken 4 en neemt twee tekens: 12, en LINKS(ruw; 2) is 30.
- DATUM(2025; 12; 30) bouwt de echte datum 30 december 2025, dus geboekt bevat het seriële getal 46021. Het laatste argument van LET is DAG(geboekt): 30.
- Naar beneden gekopieerd bevat
D3een echte datum, ISGETAL is WAAR, geboekt is de cel zelf en DAG geeft 29.D4bevat de tekst02-01-2026, die het knippen leest als 2 januari 2026, dus het resultaat is 2.
Let op: De omgekeerde fout: het knippen gaat uit van dd-mm-jjjj. Een tekstdatum in de indeling mm-dd-jjjj wordt met dag en maand omgedraaid gelezen, dus 02-01-2026 als 1 februari bedoeld geeft dag 2 in plaats van 1, zonder foutmelding. Controleer de indeling bij de bron voordat je op de kolom vertrouwt.
Meer over dit voorbeeld: waarom het werkt, nog 1 valkuil, 1 variant
Waarom het werkt
De formule scheidt de twee soorten cellen voordat DAG ze ziet, en vraagt Excel nooit een tekstindeling te raden. Het knippen hangt alleen van de tekens af, dus het geeft in elke regio-instelling hetzelfde antwoord.
Gebruik deze opbouw niet als de hele kolom tekst is in één indeling: zet haar eenmalig om met Tekst naar kolommen of Power Query en gebruik een kale DAG op echte datums. DATUMWAARDE is korter, maar leest de tekst met de regio-instelling, en dat is precies wat deze formule vermijdt.
Meer om op te letten
- Een tekstdatum met een tijd, zoals 30-12-2025 17:45, laat RECHTS(ruw; 4) 7:45 geven, en DATUM faalt met #WAARDE!. Die fout is zichtbaar, maar voor zo'n indeling heeft de formule een andere knip nodig.
Varianten
=DAG(B2)
=DAG(B2)
De kale vorm voor een kolom met echte datums, en dat hoort de kolom na omzetting te worden.
Veelgemaakte fouten
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
| #WAARDE! op een datum uit een export | DAG geeft #WAARDE! op een datum uit een export. De cel bevat tekst, en de regio-instelling kan de indeling niet lezen. | Zet de tekst eenmalig om in echte datums (Tekst naar kolommen, of DATUM met LINKS, DEEL en RECHTS zoals in het voorbeeld op niveau Expert). Een echte datum staat standaard rechts uitgelijnd; tekst staat links. |
| 0 bij een lege datumcel | DAG van een lege cel geeft 0, dus een ontbrekende datum lijkt een geldig dagnummer en komt in je tellingen terecht. | Test eerst op leeg: ALS(B2=""; "Geen datum"; DAG(B2)), zoals het voorbeeld op niveau Halfgevorderd doet. |
| Maandeinden op de 30e worden gemist | Je test DAG(B2)=31 om data op een maandeinde te vinden en mist elke maand die op de 30e, 29e of 28e eindigt. | Test DAG(B2+1)=1: de dag na een maandeinde is altijd de 1e. Of vergelijk met LAATSTE.DAG(B2; 0). |