MONTH
MAAND in Dutch Excel
Returns the month of a date as a number from 1 (January) to 12 (December).
Last updated: 13 October 2026
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | Entry no. | Posting date | Journal | Month |
| 2 | 25-0398 | 28 Nov 2025 | VRK | 1111=MONTH(B2)=MONTH(B2) |
| 3 | 25-0412 | 29 Dec 2025 | INK | |
| 4 | 26-0003 | 2 Jan 2026 | BNK |
Swipe sideways to see all columns
Result: 11
=MONTH(B2)
=MONTH(B2)
What MONTH does and when to use it
What it does: it returns the month of a date as a number from 1 to 12, for example 3 for a posting made on 14 March.
When to use it: whenever a calculation depends on the month of a date: grouping by month, period keys together with YEAR, quarter labels and fiscal periods. For the month name instead of the number, use TEXT with a month format code.
How Excel evaluates it
Excel reads serial_number and treats it by type:
- a number is a count of days since 1 January 1900; Excel finds the calendar date of that day and returns its month, ignoring any time fraction
- text is first read as a date using the regional setting:
31-03-2026works in a Dutch setting and returns #VALUE! in a US one, because the US reads 31 as the month - a month name on its own, such as
maart, is not a date and also returns #VALUE!
The result is always a whole number from 1 to 12.
Watch out: On its own, MONTH puts March 2025 and March 2026 in the same bucket: combine it with YEAR as soon as the data spans more than one year.
MONTH(serial_number)
MONTH(serial_number)
| Argument | Type | Meaning |
|---|---|---|
serial_number | Required | The date whose month you want, as a real date value. |
Return value:A number from 1 to 12: the month of the date
Formulas use commas (,) between arguments, as in English Excel. Formulas use semicolons (;) between arguments, as in Dutch Excel. Formulas use commas (,) between arguments, as in English Excel; Dutch Excel uses semicolons (;).
Worked examples
Beginner
Which month a journal line was posted in
You are testing journal entries in the XAF auditfile of Veldhuis Installatie BV, exported to a sheet. Before you filter on the postings of one month, you add a column with the month number of each posting date.
| Row | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | Entry no. | Posting date | Journal | Month | |
| 2 | 25-0398 | 28 Nov 2025 | VRK | 1111=MONTH(B2)=MONTH(B2) | |
| 3 | 25-0412 | 29 Dec 2025 | INK | ||
| 4 | 26-0003 | 2 Jan 2026 | BNK | ||
| 5 |
Swipe sideways to see all columns
Formula in D2
=MONTH(B2)
=MONTH(B2)
Result: 1111
Step by step
- Excel reads
B2: 28 November 2025, stored as serial number 45989. - It finds the calendar date of day 45989 and takes the month part: November.
- MONTH returns 11, the position of November in the year.
- Copied down,
D3returns 12 for 29 December 2025 andD4returns 1 for 2 January 2026.
Watch out: D4 returns 1 for January 2026, the same as a posting in January 2025 would. Filtering on 1 shows both years unless you also filter on the year.
More on this example: why it works
Why it works
Every date carries its month inside the serial number, and MONTH pulls out that part as a number from 1 to 12. A number filters and sorts reliably, unlike month names, which sort alphabetically.
Intermediate
Period key that keeps years apart
For the cut-off test around year end 31 December 2025 you total the journal lines per period. The auditfile holds lines from December 2025 and from 2026, and the month number alone would put both Decembers in the same bucket.
You build a key like 202512 that sorts in time order, and copy the formula down column E.
| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Entry no. | Posting date | Journal | Amount | Period key | |
| 2 | 25-0431 | 18 Dec 2025 | VRK | €12,450.00€ 12.450,00 | 202512202512=YEAR(B2) * 100 + MONTH(B2)=YEAR(B2) * 100 + MONTH(B2) | |
| 3 | 26-0006 | 7 Jan 2026 | INK | €940.00€ 940,00 | ||
| 4 | 26-0021 | 29 Jan 2026 | VRK | €7,260.00€ 7.260,00 | ||
| 5 | 26-0388 | 2 Dec 2026 | MEM | €5,000.00€ 5.000,00 | ||
| 6 |
Swipe sideways to see all columns
Formula in E2
=YEAR(B2) * 100 + MONTH(B2)
=YEAR(B2) * 100 + MONTH(B2)
Result: 202512202512
Step by step
B2holds 18 December 2025 (serial number 46009). YEAR(B2) returns 2025 and MONTH(B2) returns 12.- Multiplying the year by 100 makes room for two month digits: 2025 * 100 = 202500.
- Adding the month gives 202500 + 12 = 202512.
- Copied down:
E3andE4both return 202601, so the two January lines share a period.E5returns 202612. - With MONTH alone,
E2andE5would both show 12 and the two Decembers, a year apart, would be added together.
Watch out: Joining the parts as text, YEAR(B2) & MONTH(B2), gives 20262 for February and 202610 for October. The keys differ in length and, sorted as text, October comes before February. Multiplying by 100 keeps the month at two digits.
More on this example: why it works, 1 variation
Why it works
The year takes the first four digits and the month the last two, so every period gets a unique number, and numeric order equals time order: 202512 comes before 202601. The formula has no $ signs because it only reads its own row.
Variations
=DATE(YEAR(B2),MONTH(B2), 1)
=DATE(YEAR(B2);MONTH(B2); 1)
The first day of the month as the key: still a real date, so it works on a date axis in a chart and in a PivotTable.
Advanced
Fiscal quarter label for a year starting in April
Your client's fiscal year starts on 1 April, so April to June is the first quarter and January to March the fourth.
For the quarterly analysis of journal entries, each posting needs a quarter label. The start month sits in F1, so the same formula works for another client with a different fiscal year.
| Row | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 1 | Posting date | Entry no. | Amount | Fiscal quarter | Fiscal year starts in month | 44 | |
| 2 | 17 Feb 2026 | 26-0117 | €2,150.00€ 2.150,00 | Q4="Q" & ROUNDUP((MOD(MONTH(A2) - $F$1, 12) + 1) / 3, 0)="Q" & ROUNDUP((MOD(MONTH(A2) - $F$1; 12) + 1) / 3; 0) | |||
| 3 | 1 Apr 2026 | 26-0201 | €980.00€ 980,00 | ||||
| 4 | 31 Mar 2026 | 26-0198 | €1,320.00€ 1.320,00 | ||||
| 5 | 30 Sep 2026 | 26-0412 | €760.00€ 760,00 | ||||
| 6 | 15 Dec 2026 | 26-0530 | €1,890.00€ 1.890,00 | ||||
| 7 |
Swipe sideways to see all columns
Formula in D2
="Q" & ROUNDUP((MOD(MONTH(A2) - $F$1,12) + 1) / 3, 0)
="Q" & ROUNDUP((MOD(MONTH(A2) - $F$1;12) + 1) / 3; 0)
Result: Q4
Step by step
- Excel evaluates the innermost function first. MONTH(A2) returns 2 for 17 February 2026.
- MONTH(A2) - $F$1 = 2 - 4 = -2. MOD(-2, 12) returns 10, because Excel's MOD takes the sign of the divisor: February is 10 months after April in a 12-month cycle.
- Adding 1 turns that offset into the fiscal month number: 11. February is the 11th month of the fiscal year.
- 11 / 3 = 3.67, and ROUNDUP(3.67, 0) = 4. Months 10, 11 and 12 of the fiscal year form quarter 4.
- The & joins the letter from strings with the number, giving Q4 in English and K4 in Dutch. The result is text.
The other rows:
- 1 April 2026 gives MOD(0, 12) + 1 = 1, so Q1
- 31 March gives MOD(-1, 12) + 1 = 12, so Q4
- 30 September gives 5 + 1 = 6, so Q2
- 15 December gives 8 + 1 = 9, so Q3
Watch out: Leaving out the + 1 looks harmless and even gives Q4 for February, but it shifts every quarter boundary by a month: July returns Q1 instead of Q2, and April returns Q0.
More on this example: why it works, 1 more pitfall, 1 variation
Why it works
MOD turns the calendar month into a position within the fiscal year, wrapping months before the start month around to the end. Once you have that position from 1 to 12, dividing by 3 and rounding up gives the quarter. Changing F1 moves the whole calendar without touching the formula.
More to watch out for
- If
F1is empty it counts as 0, which behaves like a fiscal year starting in December, and the labels are wrong without any error.
Variations
=CHOOSE(MONTH(A2),4, 4, 4, 1, 1, 1, 2, 2, 2, 3, 3, 3)
=CHOOSE(MONTH(A2);4; 4; 4; 1; 1; 1; 2; 2; 2; 3; 3; 3)
A lookup list per calendar month that returns the quarter number: readable at a glance for a fixed April start, but it has to be rewritten for any other start month.
MasterExcel 2021 or later (This example needs Excel 2021 or later)
Months of depreciation between two dates
You recalculate depreciation from the fixed asset register: an asset is depreciated for every calendar month in which it is in use, and any day in a month counts as the whole month. Assets still in use have no disposal date, one disposal date was keyed in before the purchase date, and the count must be exact. Assets still in use are counted up to the balance sheet date in G1.
| Row | A | B | C | D | E | F | G | H |
|---|---|---|---|---|---|---|---|---|
| 1 | Asset | In use from | Disposed on | Depreciation months | Balance sheet date | 31 Dec 2025 | ||
| 2 | A-101 | 20 Nov 2024 | 5 Mar 2025 | 55=LET( start, B2, finish, IF(ISBLANK(C2), $G$1, C2), startIdx, YEAR(start) * 12 + MONTH(start), finishIdx, YEAR(finish) * 12 + MONTH(finish), MAX(0, finishIdx - startIdx + 1) )=LET( start; B2; finish; IF(ISBLANK(C2); $G$1; C2); startIdx; YEAR(start) * 12 + MONTH(start); finishIdx; YEAR(finish) * 12 + MONTH(finish); MAX(0; finishIdx - startIdx + 1) ) | ||||
| 3 | A-102 | 1 Jan 2025 | 31 Jan 2025 | |||||
| 4 | A-103 | 15 Jun 2025 | ||||||
| 5 | A-104 | 10 May 2025 | 30 Apr 2025 | |||||
| 6 | A-105 | 31 Dec 2023 | 1 Jan 2025 | |||||
| 7 |
Swipe sideways to see all columns
Formula in D2
=LET( start,B2, finish, IF(ISBLANK(C2), $G$1, C2), startIdx, YEAR(start) * 12 + MONTH(start), finishIdx, YEAR(finish) * 12 + MONTH(finish), MAX(0, finishIdx - startIdx + 1) )
=LET( start;B2; finish; IF(ISBLANK(C2); $G$1; C2); startIdx; YEAR(start) * 12 + MONTH(start); finishIdx; YEAR(finish) * 12 + MONTH(finish); MAX(0; finishIdx - startIdx + 1) )
Result: 55
Step by step
- LET sets start to
B2, 20 November 2024. finish isC2, 5 March 2025, becauseC2is not blank; for a blank disposal date it would take the balance sheet date in$G$1. - startIdx turns the start month into a running month number: YEAR(start) * 12 + MONTH(start) = 2024 * 12 + 11 = 24288 + 11 = 24299.
- finishIdx does the same for the end: 2025 * 12 + 3 = 24300 + 3 = 24303.
- The difference counts month steps, and + 1 counts the start month itself: 24303 - 24299 + 1 = 5, which are November, December, January, February and March. MAX(0, 5) leaves it at 5.
A-103has no disposal, so finish is 31 December 2025: June to December, 24312 - 24306 + 1 = 7.A-104is disposed before it is in use: 24304 - 24305 + 1 = 0, and MAX turns any larger reversal into 0 instead of a negative number of months.A-105runs from 31 December 2023 to 1 January 2025, only 367 days, yet touches 14 calendar months: 24301 - 24288 + 1 = 14.A-102lies within one month and returns 1.
Watch out: The mirror-image mistake is dropping the + 1. The formula still looks sensible and returns 4 for A-101, but it counts the gaps between months instead of the months in use, so every recalculated charge is one month short.
More on this example: why it works, 2 more pitfalls
Why it works
YEAR * 12 + MONTH gives every calendar month its own consecutive number, so months across year boundaries can be subtracted like integers and the day of the month drops out completely. LET names each step, the blank disposal date is handled in one place, and MAX guards against reversed dates.
Do not use this when the client depreciates in completed months from the purchase day (20 November to 19 December is one month); then a month count based on EDATE, or DATEDIF with the month unit, is the alternative, at the cost of fiddlier edge cases around the 29th to the 31st.
More to watch out for
- Dividing the day count by 30 looks close but is not a month count:
A-105gives 367 / 30 = 12.2, where the asset was in use in 14 calendar months. - A disposal date that holds a space instead of being empty is not blank for ISBLANK, and YEAR then returns #VALUE!. Clear such cells with Delete, not the spacebar.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| Every row returns 1 | MONTH is applied to a column that already holds month numbers, and every row returns 1. | The number 3 is read as serial number 3, which is 3 January 1900, so its month is 1. If the column already holds 1 to 12, use it directly; MONTH needs a full date. |
| January shows double the usual sales | A monthly summary on MONTH alone shows January with twice the usual sales. | The data spans two years and both Januaries were added together. Build a key with YEAR(date) * 100 + MONTH(date), or group on the first day of the month. |
| #VALUE! or swapped day and month | MONTH returns #VALUE! on imported dates, or the months come out swapped with the days for dates up to the 12th. | The dates are text read with the wrong day-month order. Convert them to real dates once, with Text to Columns set to the right order, before using MONTH. |