Excel guide · 6 min read
How to list all dates between two dates in Excel
=SEQUENCE(B2-B1+1,1,B1). It spills one row per day, including both ends. Format the results as dates, or they show as serial numbers like 46377. In older versions, type the start date and use Home > Fill > Series with Type set to Date and the end date as the Stop value.Sample data
Every result on this page was calculated from this sheet by the same spreadsheet engine the Cellwise app uses.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Rota start | Dec 21, 2026 | Office closed | Meetings from | Nov 4, 2026 | ||
| 2 | Rota end | Jan 4, 2027 | Dec 25, 2026 | Meetings until | Mar 31, 2027 | ||
| 3 | Dec 28, 2026 | Lease start | Jan 31, 2027 | ||||
| 4 | Jan 1, 2027 |
Every day from start to end with SEQUENCE
The example is a holiday cover rota: the office needs someone on call every day from Monday 21 December 2026 to Monday 4 January 2027. B1 holds the start, B2 the end.
SEQUENCE(rows, columns, start) counts up by 1 from the start value. Dates are whole numbers in Excel (one per day), so counting up from the start date gives the next day each row. The number of rows is B2-B1+1: the +1 is what makes the end date appear. Without it you get 14 dates and the list stops on 3 January.
The result spills down from the formula cell, 15 cells in all, and updates when you change either date. Leave the cells below empty, or the formula shows #SPILL!. Spill formulas also do not work inside an Excel Table, so put the list next to the table, not in it.
Result: spills 15 rows × 1 column
| 46377 |
| 46378 |
| 46379 |
| 46380 |
| 46381 |
| 46382 |
| 46383 |
| 46384 |
| 46385 |
| 46386 |
| 46387 |
| 46388 |
46377, 46378 and so on down to 46391: 15 serial numbers, one per day. They are the right dates, just not formatted yet.
Make the list show as dates
SEQUENCE returns plain numbers, so a General cell shows 46377 instead of 21/12/2026. Select the spill area (or the whole column) and choose Home > Number Format > Short Date. For a rota, a custom format reads better: press Ctrl+1, choose Custom and type ddd d mmm to show Mon 21 Dec.
You can also wrap the formula in TEXT to get labels directly. That is handy for printed headings, but the result is text: it will not sort by date, cannot be used in date sums, and a lookup against real dates will not find it. Keep the real dates and change the format unless you only need labels.
For a calendar or timesheet header that runs across the page, swap the first two arguments: =SEQUENCE(1,B2-B1+1,B1) spills the same 15 dates across one row.
Result: spills 15 rows × 1 column
| Mon 21 Dec |
| Tue 22 Dec |
| Wed 23 Dec |
| Thu 24 Dec |
| Fri 25 Dec |
| Sat 26 Dec |
| Sun 27 Dec |
| Mon 28 Dec |
| Tue 29 Dec |
| Wed 30 Dec |
| Thu 31 Dec |
| Fri 1 Jan |
Mon 21 Dec, Tue 22 Dec, through Mon 4 Jan, as text labels.
Weekdays only, and skipping holidays
To drop Saturdays and Sundays, filter the sequence with WEEKDAY. WEEKDAY(date,2) numbers Monday as 1 and Sunday as 7, so less than 6 keeps Monday to Friday. The rota has 11 weekdays between the two dates; the other 4 days are weekend days.
The office is also closed on 25 December, 28 December and 1 January (D2:D4). The cleanest way to skip those as well is WORKDAY. NETWORKDAYS counts the working days (8 here), SEQUENCE makes the numbers 1 to 8, and WORKDAY steps that many working days forward from the day before the start. Starting from B1-1 matters: from B1 itself the list would begin on 22 December.
If Saturday is a working day, use the .INTL versions with weekend code 11 (Sunday only): =WORKDAY.INTL(B1-1,SEQUENCE(NETWORKDAYS.INTL(B1,B2,11,D2:D4)),11,D2:D4) lists 10 dates. The FILTER route can skip holidays too, by adding *(COUNTIF(D2:D4,SEQUENCE(B2-B1+1,1,B1))=0) to the condition, but WORKDAY is shorter and easier to check.
Result: spills 8 rows × 1 column
| 46377 |
| 46378 |
| 46379 |
| 46380 |
| 46385 |
| 46386 |
| 46387 |
| 46391 |
8 dates: 21, 22, 23, 24, 29, 30 and 31 December and 4 January. Weekends and the three closure days are left out.
Every Monday (or any weekday) between two dates
A weekly meeting runs from Wednesday 4 November 2026 (G1) to 31 March 2027 (G2), every Monday. Use SEQUENCE with a step of 7, starting from the first Monday on or after G1.
G1+MOD(2-WEEKDAY(G1),7) finds that Monday: WEEKDAY gives Sunday 1, Monday 2, and so on, and MOD works out how many days to move forward (0 if G1 is already a Monday). Here it lands on Monday 9 November. For another weekday, change the 2: 6 for Friday, 1 for Sunday.
The count is the gap from that Monday to the end, divided by 7, rounded down, plus 1. If that feels like too much arithmetic, the filter version gives the same 21 dates: =FILTER(SEQUENCE(G2-G1+1,1,G1),WEEKDAY(SEQUENCE(G2-G1+1,1,G1))=2).
Result: spills 21 rows × 1 column
| 46335 |
| 46342 |
| 46349 |
| 46356 |
| 46363 |
| 46370 |
| 46377 |
| 46384 |
| 46391 |
| 46398 |
| 46405 |
| 46412 |
21 Mondays, from 9 November 2026 to 29 March 2027 (format as dates to read them).
Every month: same day, first day or last day
Months are not a fixed number of days, so do not use a step of 30. From 31 January, SEQUENCE(4,1,G3,30) gives 2 March, 1 April and 1 May, drifting away from month ends. Use EDATE, which moves by whole months, with SEQUENCE supplying 0, 1, 2 and so on.
EDATE handles short months: from a lease that starts on 31 January 2027 it gives 31 January, 28 February, 31 March and 30 April. Always count from the original start date, as this formula does. If you instead fill =EDATE(previous cell,1) down a column, February's 28 sticks and every later month lands on the 28th (28 March, not 31 March).
For month ends, use =EOMONTH(G1,SEQUENCE(DATEDIF(G1,G2,"m")+1,1,0)), which gives 30 November to 31 March for the meeting range. For the first of each month, =EOMONTH(G1,SEQUENCE(DATEDIF(G1,G2,"m")+1,1,-1))+1 gives 1 November to 1 March. Note that 1 November is before the 4 November start, so check whether that first month should be included. DATEDIF(G1,G2,"m") counts whole months between the dates (4 here), and +1 includes the starting month.
Result: spills 4 rows × 1 column
| 31 Jan 2027 |
| 28 Feb 2027 |
| 31 Mar 2027 |
| 30 Apr 2027 |
31 Jan 2027, 28 Feb 2027, 31 Mar 2027, 30 Apr 2027: four monthly dates that stay on the month end.
Older Excel: Fill Series and the fill handle
Without SEQUENCE (Excel 2019 and earlier), let Excel fill the dates. The result is fixed values, so if the start or end changes, you fill again.
The fill handle works too: type the start date, then drag the small square at the bottom right of the cell down with the right mouse button and choose Fill Days, Fill Weekdays, Fill Months or Fill Years when you let go. Fill Weekdays skips Saturdays and Sundays, but it knows nothing about holidays, so remove closure days by hand.
Watch for start dates that carry a time. If B1 is 21 December at 9:00, every date in the SEQUENCE list is also at 9:00, which breaks exact matches against plain dates in lookups and COUNTIF. Use INT(B1) and INT(B2) in the formula to drop the times. And if the end date is before the start, B2-B1+1 is zero or negative and SEQUENCE returns an error, so check the dates are the right way round.
- Type the start date in the first cell, for example A5, and select it.
- Go to Home > Fill > Series.
- Choose Series in Columns and Type Date, then pick the Date unit: Day, Weekday, Month or Year.
- Leave Step value at 1 (or 7 for weekly), type the end date in Stop value, for example 04/01/2027 in your system's date order, and click OK.
Common mistakes
Leaving off the +1
B2-B1 is the gap, not the count. =SEQUENCE(B2-B1+1,1,B1) includes both the start and end dates.
The list shows numbers like 46377
Those are dates in General format. Apply Short Date or a custom format such as ddd d mmm to the spill area.
Monthly dates made with a step of 30 or a chained EDATE
Use =EDATE(start,SEQUENCE(n,1,0)) from the original start so 31st-of-month dates stay on the month end.
Using TEXT for the list and then looking dates up
TEXT returns labels, not dates. Keep real dates and format them if you need to sort, sum or match them.
FAQ
How do I list all dates between two dates in Excel?
With the start in B1 and the end in B2, enter =SEQUENCE(B2-B1+1,1,B1) in Excel 365 or 2021 and format the spill as dates. In older Excel, use Home > Fill > Series with Type Date and the end date as the Stop value.
How do I list only working days between two dates?
Use =WORKDAY(B1-1,SEQUENCE(NETWORKDAYS(B1,B2,holidays)),holidays). It skips weekends and any dates in the holidays range. For other weekend patterns, use WORKDAY.INTL and NETWORKDAYS.INTL with a weekend code.
Why does my date sequence show numbers instead of dates?
Excel stores dates as serial numbers, and SEQUENCE returns them in General format. Select the results and apply a date format with Home > Number Format or Ctrl+1.
How do I list every month between two dates?
Use =EDATE(start,SEQUENCE(DATEDIF(start,end,"m")+1,1,0)) for the same day each month, or EOMONTH with SEQUENCE for month ends.
Can I list the dates across a row instead of down a column?
Yes. Put the count in the columns argument: =SEQUENCE(1,B2-B1+1,B1) spills the dates across one row, which suits calendar and timesheet headers.
Functions used
SEQUENCENumbered list, spillsTEXTNumber to formatted textWORKDAYDate after n working daysNETWORKDAYSWeekdays between datesWORKDAY.INTLWorking days with your own weekendNETWORKDAYS.INTLWeekdays between dates, custom weekendFILTERKeeps matching rows, spillsWEEKDAYDay of the week as a numberMODRemainder after divisionINTRounds down to integerEDATESame day, months laterEOMONTHLast day of a monthDATEDIFWhole years, months or days betweenCOUNTIFCounts cells that match
Related guides
- How to count working days between two dates in Excel
- How to add months to a date in Excel
- How to auto number rows in Excel
- How to get the day of the week from a date in Excel
- How to find missing numbers in a sequence in Excel
- How to find the nth weekday of a month in Excel
- Check if a date is a weekend in Excel
Updated