Tabellab
Excel formulas

YTD formula in Excel: year-to-date totals with SUMIFS

A YTD formula in Excel adds up every value from 1 January to the report date with two conditions on the same date column: =SUMIFS(B2:B22,A2:A22,">="&DATE(YEAR(C24),1,1),A2:A22,"<="&C24). The first condition opens the window at the start of the year, the second closes it at the report month. In the example below, January to August 2026 add up to 746,700, against 710,400 for the same eight months of 2025, so year-to-date sales are up 5.1%.

Updated 21 Oct 2026 5 min read By Tabellab team

The YTD formula with SUMIFS

=SUMIFS(sum_range, date_range, ">="&start, date_range, "<="&end)

  • start is 1 January of the report year: DATE(YEAR(C24),1,1). Taking the year from the report date means the formula rolls into the new year on its own.
  • end is the report date itself, here the month-end key in C24.
  • The comparison operator is text and the date is a number, so they are joined with &: ">="&DATE(…).

Both conditions point at the same date column. SUMIFS only adds a row when every condition is true, so the two together form a window. Add more pairs to split the YTD by store, product or region, exactly as in the SUMIFS examples.

Monthly data or daily transactions

The example stores one row per month with a month-end date (31 Jan, 28 Feb …). Then "<="&C24 with C24 = 31 Aug 2026 includes August, and the window covers eight months. Month-end keys come from =EOMONTH(date,0), which turns any order date into the last day of its month.

With daily transactions the same formula works with the report date as the end. If the dates carry a time of day, use "less than the next day" instead: "<"&C24+1. A dashboard that always shows today's YTD uses TODAY() in both places: =SUMIFS(B:B,A:A,">="&DATE(YEAR(TODAY()),1,1),A:A,"<="&TODAY()).

Worked example: YTD, prior-year YTD and YoY growth from monthly sales

Monthly sales of a fictional coffee chain from January 2025 to the still-open September 2026, stored with month-end dates (yellow inputs). Column C is a running YTD that restarts every January. Rows 24 to 31 calculate the YTD for the report month in C24, the prior-year YTD, the YoY growth and two classic errors.

Worked example: YTD, prior-year YTD and YoY growth from monthly sales
ABC
1Month endSales (USD)Running YTD
231 Jan 202584,20084,200
328 Feb 202579,800164,000
431 Mar 202589,900253,900
530 Apr 202591,500345,400
631 May 202590,700436,100
730 Jun 202587,900524,000
831 Jul 202592,800616,800
931 Aug 202593,600710,400
1030 Sep 202591,800802,200
1131 Oct 202590,400892,600
1230 Nov 202596,900989,500
1331 Dec 2025103,2001,092,700
1431 Jan 202687,60087,600
1528 Feb 202685,400173,000
1631 Mar 202694,800267,800
1730 Apr 202686,900354,700
1831 May 202695,300450,000
1930 Jun 202694,600544,600
2031 Jul 2026100,900645,500
2131 Aug 2026101,200746,700
2230 Sep 202652,400799,100
23
24Report month (last closed)31 Aug 2026
25YTD 2026: 1 Jan to the report month746,700
26Prior-year YTD: 1 Jan 2025 to 31 Aug 2025710,400
27YoY growth of YTD5.1%
28Wrong: no upper date limit (includes open September)799,100
29Wrong: YTD against the full prior year-31.7%
30Months in the YTD window (COUNTIFS)8
31Average month YTD93,337.50
Key formulas
  • C2=SUMIFS($B$2:B2,$A$2:A2,">="&DATE(YEAR(A2),1,1))Running YTD, restarts every January
  • C25=SUMIFS(B2:B22,A2:A22,">="&DATE(YEAR(C24),1,1),A2:A22,"<="&C24)YTD: 1 Jan to the report month
  • C26=SUMIFS(B2:B22,A2:A22,">="&DATE(YEAR(C24)-1,1,1),A2:A22,"<="&EOMONTH(C24,-12))Prior-year YTD, the same window a year earlier
  • C27=C25/C26-1YoY growth of YTD
  • C30=COUNTIFS(A2:A22,">="&DATE(YEAR(C24),1,1),A2:A22,"<="&C24)Months in the window

Fictional, illustrative figures. September 2026 holds month-to-date sales only, so the report month is the last closed month, August 2026.

Report on the last closed month

The last data row, September 2026, is still open: it holds only the first days of the month. Drop the upper date limit and the YTD becomes 799,100 instead of 746,700, eight and a half months against eight months last year. Monthly reports therefore use the last closed month as the report month and keep the open month in a separate month-to-date (MTD) block.

Prior-year YTD and YoY growth

A YTD figure means little on its own. Compare it with the same window one year earlier: start on 1 January of the prior year and stop twelve months before the report month.

=SUMIFS(B2:B22,A2:A22,">="&DATE(YEAR(C24)-1,1,1),A2:A22,"<="&EOMONTH(C24,-12)) returns 710,400. YoY growth is then =C25/C26-1 = 746,700 ÷ 710,400 − 1 = 5.1%.

For month-end keys, EOMONTH(C24,-12) is safer than EDATE(C24,-12), because EOMONTH always lands on a month end, including 29 February. Comparing YTD with the full prior year is the classic error: eight months against twelve gives −31.7%, a collapse that never happened.

A running YTD column that restarts every January

Column C shows the YTD at every month: =SUMIFS($B$2:B2,$A$2:A2,">="&DATE(YEAR(A2),1,1)), filled down. The first row of each range is locked with $ and the end grows with every row, so each cell adds everything from the top to its own row, but only from 1 January of its own year. December 2025 shows the full year, 1,092,700, and January 2026 starts again at 87,600. The running YTD is what a cumulative chart of this year against last year plots.

Fiscal years, QTD and rolling 12 months

Only the start date changes for other windows:

  • Fiscal year starting in April: DATE(YEAR(EDATE(C24,-3)),4,1). Moving the report month back three months finds the calendar year in which the fiscal year began, so August 2026 starts on 1 Apr 2026 and February 2027 still starts on 1 Apr 2026.
  • Quarter-to-date: EOMONTH(C24,-MOD(MONTH(C24)-1,3)-1)+1 gives 1 July for August.
  • Rolling 12 months: ">"&EOMONTH(C24,-12) as the start and "<="&C24 as the end, September 2025 to August 2026.

The average month of the YTD window is the YTD divided by the number of months, which COUNTIFS with the same two conditions returns: 746,700 ÷ 8 = 93,337.50.

Common mistakes

  • Only one date condition. Without the upper limit the YTD runs to the last row and picks up the open month or future budget rows: 799,100 instead of 746,700.
  • Comparing YTD with the full prior year. Eight months against twelve always looks like a decline. Use the prior-year YTD for the same months.
  • The date inside the quotes. ">=DATE(2026,1,1)" is compared as text and matches nothing. Keep only the operator in quotes and join the date with &.
  • Dates stored as text. Imported dates that are really text are skipped by SUMIFS without an error. Check with =ISNUMBER(A2) and convert them first.
  • Mixing month-start and month-end keys. If the data use month-end dates but the report cell says 1 Aug 2026, "<="&1 Aug leaves out the August row (31 Aug). Use the same convention in the data and in the report cell.
  • EDATE on month ends in a leap year. EDATE(28 Feb 2029,-12) returns 28 Feb 2028 and loses 29 February. EOMONTH(…,-12) always returns the month end.

Frequently asked questions

What is the YTD formula in Excel?

Use SUMIFS with two conditions on the date column: =SUMIFS(values,dates,">="&DATE(YEAR(report),1,1),dates,"<="&report). It adds every value from 1 January of the report year up to the report date.

How do I calculate YTD up to today?

Replace the report date with TODAY(): =SUMIFS(B:B,A:A,">="&DATE(YEAR(TODAY()),1,1),A:A,"<="&TODAY()). The window moves every day and starts again on 1 January.

How do I calculate YTD growth compared with last year?

Calculate the prior-year YTD with the same formula shifted back one year, using DATE(YEAR(report)-1,1,1) as the start and EOMONTH(report,-12) as the end, then divide: this year's YTD ÷ prior-year YTD − 1.

Can a YTD formula use a fiscal year?

Yes, only the start date changes. For a fiscal year starting on 1 April, use DATE(YEAR(EDATE(report,-3)),4,1) as the start and keep the report date as the end.

Practise it in a lab

Related guides

Reading is step one. Doing is step two.

Every guide links to a lab where you build the same calculation in an online spreadsheet and get instant feedback.

Open the lab