Cellwise Start free

Excel guide · 5 min read

How to concatenate dates in Excel

Quick answerWrap each date in TEXT before you join it: =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.

ABCDEFG
1ItemStartEndOwnerCall dateCall time
2Sprint 14Mar 3, 2026Mar 9, 2026AnaMar 5, 202614:30
3Sprint 15Mar 10, 2026Mar 16, 2026BenMar 12, 20269:00
4Spring launchMar 24, 2026Apr 6, 2026Ana
5Training dayMay 14, 2026May 14, 2026Cara
6Year-end freezeDec 28, 2026Jan 3, 2027Ben
7Site auditJun 8, 2026Ana

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.

=A2&" starts "&B2

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.

=A2&" starts "&TEXT(B2,"dddd, mmm d")

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.

=TEXT(B2,"mmm d")&" – "&TEXT(C2,"mmm d")

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.

=IFS(B2=C2,TEXT(B2,"mmm d"),YEAR(B2)<>YEAR(C2),TEXT(B2,"mmm d, yyyy")&" – "&TEXT(C2,"mmm d, yyyy"),MONTH(B2)<>MONTH(C2),TEXT(B2,"mmm d")&" – "&TEXT(C2,"mmm d"),TRUE,TEXT(B2,"mmm d")&"–"&TEXT(C2,"d"))

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).

="Week of "&TEXT(F2-WEEKDAY(F2,3),"mmm d")&" – "&TEXT(F2-WEEKDAY(F2,3)+6,"mmm d")

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.

=TEXT(F2,"ddd mmm d")&" at "&TEXT(G2,"h:mm AM/PM")

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.

=TEXTJOIN(", ",TRUE,TEXT(FILTER(B2:B7,D2:D7="Ana"),"mmm d"))

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

Related guides

Updated