Available in:All versions (Works in Excel 2007, every later version, Microsoft 365 and Excel for the web)Examples need Excel 2021 or laterCategory:Date & time

MONTH

MAAND in Dutch Excel

Returns the month of a date as a number from 1 (January) to 12 (December).

Difficulty rating 1 of 5. One argument, a number from 1 to 12 back; the traps are text dates and forgetting that the month alone says nothing about the year.

Last updated: 13 October 2026

See the worked examples

Sheet excerpt: D2 holds the formula
RowABCD
1Entry no.Posting dateJournalMonth
225-039828 Nov 2025VRK1111=MONTH(B2)=MONTH(B2)
325-041229 Dec 2025INK
426-00032 Jan 2026BNK
Formula cell (D2)Input

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-2026 works 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)
Arguments
ArgumentTypeMeaning
serial_numberRequiredThe 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.

Sheet excerpt: D2 holds the formula
RowABCDE
1Entry no.Posting dateJournalMonth
225-039828 Nov 2025VRK1111=MONTH(B2)=MONTH(B2)
325-041229 Dec 2025INK
426-00032 Jan 2026BNK
5
Formula cell (D2)Input

Formula in D2

=MONTH(B2)
=MONTH(B2)

Result: 1111

Step by step
  1. Excel reads B2: 28 November 2025, stored as serial number 45989.
  2. It finds the calendar date of day 45989 and takes the month part: November.
  3. MONTH returns 11, the position of November in the year.
  4. Copied down, D3 returns 12 for 29 December 2025 and D4 returns 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.

Sheet excerpt: E2 holds the formula
RowABCDEF
1Entry no.Posting dateJournalAmountPeriod key
225-043118 Dec 2025VRK€12,450.00€ 12.450,00202512202512=YEAR(B2) * 100 + MONTH(B2)=YEAR(B2) * 100 + MONTH(B2)
326-00067 Jan 2026INK€940.00€ 940,00
426-002129 Jan 2026VRK€7,260.00€ 7.260,00
526-03882 Dec 2026MEM€5,000.00€ 5.000,00
6
Formula cell (E2)Input

Formula in E2

=YEAR(B2) * 100 + MONTH(B2)
=YEAR(B2) * 100 + MONTH(B2)

Result: 202512202512

Step by step
  1. B2 holds 18 December 2025 (serial number 46009). YEAR(B2) returns 2025 and MONTH(B2) returns 12.
  2. Multiplying the year by 100 makes room for two month digits: 2025 * 100 = 202500.
  3. Adding the month gives 202500 + 12 = 202512.
  4. Copied down: E3 and E4 both return 202601, so the two January lines share a period. E5 returns 202612.
  5. With MONTH alone, E2 and E5 would 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.

Sheet excerpt: D2 holds the formula
RowABCDEFG
1Posting dateEntry no.AmountFiscal quarterFiscal year starts in month44
217 Feb 202626-0117€2,150.00€ 2.150,00Q4="Q" & ROUNDUP((MOD(MONTH(A2) - $F$1, 12) + 1) / 3, 0)="Q" & ROUNDUP((MOD(MONTH(A2) - $F$1; 12) + 1) / 3; 0)
31 Apr 202626-0201€980.00€ 980,00
431 Mar 202626-0198€1,320.00€ 1.320,00
530 Sep 202626-0412€760.00€ 760,00
615 Dec 202626-0530€1,890.00€ 1.890,00
7
Formula cell (D2)Input

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
  1. Excel evaluates the innermost function first. MONTH(A2) returns 2 for 17 February 2026.
  2. 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.
  3. Adding 1 turns that offset into the fiscal month number: 11. February is the 11th month of the fiscal year.
  4. 11 / 3 = 3.67, and ROUNDUP(3.67, 0) = 4. Months 10, 11 and 12 of the fiscal year form quarter 4.
  5. The & joins the letter from strings with the number, giving Q4 in English and K4 in Dutch. The result is text.
  6. 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 F1 is 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.

Sheet excerpt: D2 holds the formula
RowABCDEFGH
1AssetIn use fromDisposed onDepreciation monthsBalance sheet date31 Dec 2025
2A-10120 Nov 20245 Mar 202555=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) )
3A-1021 Jan 202531 Jan 2025
4A-10315 Jun 2025
5A-10410 May 202530 Apr 2025
6A-10531 Dec 20231 Jan 2025
7
Formula cell (D2)InputNote: G1 holds a date: 31 December 2025.

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
  1. LET sets start to B2, 20 November 2024. finish is C2, 5 March 2025, because C2 is not blank; for a blank disposal date it would take the balance sheet date in $G$1.
  2. startIdx turns the start month into a running month number: YEAR(start) * 12 + MONTH(start) = 2024 * 12 + 11 = 24288 + 11 = 24299.
  3. finishIdx does the same for the end: 2025 * 12 + 3 = 24300 + 3 = 24303.
  4. 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.
  5. A-103 has no disposal, so finish is 31 December 2025: June to December, 24312 - 24306 + 1 = 7. A-104 is 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.
  6. A-105 runs from 31 December 2023 to 1 January 2025, only 367 days, yet touches 14 calendar months: 24301 - 24288 + 1 = 14. A-102 lies 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-105 gives 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

Common mistakes
SymptomCauseFix
Every row returns 1MONTH 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 salesA 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 monthMONTH 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.