Excel guide · 5 min read
How to concatenate dates in Excel
=A2&" starts "&TEXT(B2,"mmm d") gives "Sprint 14 starts Mar 3" instead of "Sprint 14 starts 46084". For a date range, join two TEXT results: =TEXT(B2,"mmm d")&" – "&TEXT(C2,"mmm d") gives "Mar 3 – Mar 9". The same applies to TEXTJOIN and CONCAT.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 | Item | Start | End | Owner | Call date | Call time | |
| 2 | Sprint 14 | Mar 3, 2026 | Mar 9, 2026 | Ana | Mar 5, 2026 | 14:30 | |
| 3 | Sprint 15 | Mar 10, 2026 | Mar 16, 2026 | Ben | Mar 12, 2026 | 9:00 | |
| 4 | Spring launch | Mar 24, 2026 | Apr 6, 2026 | Ana | |||
| 5 | Training day | May 14, 2026 | May 14, 2026 | Cara | |||
| 6 | Year-end freeze | Dec 28, 2026 | Jan 3, 2027 | Ben | |||
| 7 | Site audit | Jun 8, 2026 | Ana |
Download this sheet as an Excel practice file (.xlsx)
Why the date turns into a number
The sheet is a team schedule with a start and end date for each item. Joining a date with & uses the number Excel stores behind it (the count of days since January 1, 1900), not the format you see in the cell. March 3, 2026 is 46084, so that is what lands in the sentence.
CONCAT, CONCATENATE and TEXTJOIN all behave the same way, and changing the cell's format does not help, because the join never looks at the format. The guide on converting dates to text covers every format code; this one is about building labels and ranges from them.
Result: Sprint 14 starts 46084
Sprint 14 starts 46084. That is the serial number of March 3, 2026.
A date inside a sentence
TEXT(B2,"dddd, mmm d") turns the date into text in exactly the layout you write. dddd is the full weekday, mmm the short month and d the day without a leading zero. Add yyyy if the year matters to the reader.
Write the whole sentence, including spaces, inside the quoted pieces. A missing space before or after the date is the most common cosmetic bug in these formulas.
Result: Sprint 14 starts Tuesday, Mar 3
Sprint 14 starts Tuesday, Mar 3.
A date range label: "Mar 3 – Mar 9"
Join two TEXT results with a separator between them. The – in the formula is an en dash, the usual mark for ranges. Type it with Alt+0150 on the numeric keypad in Windows or Option+hyphen on a Mac, or use a plain hyphen with spaces if you prefer.
Adding the length is a common extra. C2-B2 counts the days between the dates, so add 1 when both the first and last day are included. =A2&": "&TEXT(B2,"mmm d")&" – "&TEXT(C2,"mmm d")&" ("&C2-B2+1&" days)" returns Sprint 14: Mar 3 – Mar 9 (7 days).
In Excel 365 and 2021 you can label every row at once: =TEXT(B2:B6,"mmm d")&" – "&TEXT(C2:C6,"mmm d") spills five labels down the column.
Result: Mar 3 – Mar 9
Mar 3 – Mar 9.
Smart ranges: "Mar 3–9", single days and year ends
A plain range label repeats information. People write "Mar 3–9" when both dates are in the same month, just "May 14" for a one-day item, and add the year only when the range crosses into a new year. IFS checks the cases in order and uses the first one that is TRUE.
The order matters. The year test comes before the month test, so Dec 28 to Jan 3 gets its years instead of being treated as just a change of month. TRUE at the end catches everything left, which is a range inside one month. IFS needs Excel 2019 or later; in older versions nest IF functions in the same order.
Result: Mar 3–9
Mar 3–9. Filled down, row 4 gives Mar 24 – Apr 6, row 5 gives May 14 and row 6 gives Dec 28, 2026 – Jan 3, 2027.
"Week of" labels from a single date
For weekly reports you often have one date and want the Monday-to-Sunday week it belongs to. WEEKDAY with 3 as its second argument numbers the days from 0 for Monday to 6 for Sunday, so subtracting it from the date lands on that week's Monday. Add 6 for the Sunday.
March 5, 2026 is a Thursday, so the label covers Monday, March 2 to Sunday, March 8. If your weeks start on Sunday, use WEEKDAY(F2)-1 instead of WEEKDAY(F2,3).
Result: Week of Mar 2 – Mar 8
Week of Mar 2 – Mar 8.
A date column and a time column
F2 holds the call date and G2 the time. Joined directly with F2&" "&G2 you get 46086 0.604166666666667: the date's serial number and the time as a fraction of a day. Format each part with its own TEXT.
If you need a real date and time value, for sorting or calculating, do not join them at all. Add them: =F2+G2, then format the cell with a date and time format such as yyyy-mm-dd hh:mm.
Result: Thu Mar 5 at 2:30 PM
Thu Mar 5 at 2:30 PM.
TEXTJOIN with dates, and the empty-cell trap
To list several dates in one cell, put TEXT inside TEXTJOIN. Here FILTER picks Ana's rows first, so you get a list of her start dates. TEXTJOIN alone on B2:B3 would give 46084, 46091. TEXTJOIN needs Excel 2019 or later and FILTER needs Excel 365 or 2021.
Watch for empty cells. C7 has no end date, and TEXT on an empty cell does not return an empty string: it formats it as day zero, a nonsense date. TEXTJOIN's TRUE only skips truly empty text, so that date stays in the list. Test for blanks first: =TEXTJOIN(", ",TRUE,IF(C2:C7="","",TEXT(C2:C7,"mmm d"))) returns Mar 9, Mar 16, Apr 6, May 14, Jan 3.
The same test works in a single label. =A7&": "&TEXT(B7,"mmm d")&" – "&IF(C7="","TBC",TEXT(C7,"mmm d")) returns Site audit: Jun 8 – TBC.
Result: Mar 3, Mar 24, Jun 8
Mar 3, Mar 24, Jun 8.
Common mistakes
Joining the date cell directly
& and TEXTJOIN use the stored number, so you see 46084. Wrap each date in TEXT(date,"mmm d") inside the join.
Applying TEXT to an empty cell
It returns a day-zero date instead of a blank. Use IF(cell="","",TEXT(cell,"mmm d")), or a word such as TBC.
Testing the month before the year in a smart range
Dec 28 to Jan 3 then loses its years. Check YEAR first, then MONTH.
Joining a date and a time to get a date-time value
Joining produces text. Add the two cells instead (=F2+G2) and apply a date-time format.
FAQ
How do I concatenate a date and text in Excel?
Use TEXT around the date: ="Due "&TEXT(B2,"mmm d, yyyy"). Without TEXT, Excel joins the date's serial number, such as 46084.
How do I show a date range in one cell?
Join two formatted dates: =TEXT(B2,"mmm d")&" – "&TEXT(C2,"mmm d"). For a shorter label when both dates are in the same month, use the IFS formula above, which returns Mar 3–9.
How do I add today's date to a heading?
Use ="Report as of "&TEXT(TODAY(),"mmm d, yyyy"). TODAY updates every time the workbook recalculates, so the heading always shows the current date.
Can TEXTJOIN keep the date format?
No. TEXTJOIN joins the underlying numbers. Put TEXT inside it: =TEXTJOIN(", ",TRUE,TEXT(B2:B4,"mmm d")).
Is the joined label still a date?
No, it is text. Keep the original date columns for sorting, filtering and date math, and use the label only for display.
Functions used
TEXTNumber to formatted textTEXTJOINJoins with a separatorIFSFirst true test winsYEARYear of a dateMONTHMonth numberWEEKDAYDay of the week as a numberFILTERKeeps matching rows, spillsIFPicks a result from a testTODAYToday’s date
Related guides
- How to convert a date to text in Excel
- CONCAT vs TEXTJOIN vs &: which should you use?
- How to combine text with numbers and dates in Excel
- Combine cells with a line break in Excel
- How to sum by month in Excel
- How to concatenate with a space in Excel
- Check if a date is a weekend in Excel
Updated