CONCATENATE vs TEXTJOIN: Combining Text in Excel
Last updated June 2026
Quick answer
To combine text in Excel, use TEXTJOIN when you need a delimiter or are joining three or more cells — =TEXTJOIN(", ",TRUE,A2:C2) takes one separator, ignores blanks, and accepts whole ranges. Use the & operator for quick two-cell joins like =A2&" "&B2. CONCATENATE still works but is legacy; you never need it in Microsoft 365.
The decision is mechanical. Joining two cells with a space or a dash? Reach for & — it is the fastest thing to type. Stitching a list together with the same separator between every item, or pulling in a range where some cells are empty? That is exactly what TEXTJOIN was built for. Everything below shows both, plus how to keep dates and numbers from turning into junk.
| Method | Delimiter support | Accepts ranges | Blank handling | Availability |
|---|---|---|---|---|
& operator | Manual — type it between each piece | No — one cell at a time | Keeps blanks (extra delimiters) | Every version of Excel |
CONCAT | Manual — type it between each piece | Yes | Keeps blanks | Excel 2019 / Microsoft 365 |
CONCATENATE | Manual — type it between each piece | No — one cell at a time | Keeps blanks | All versions (legacy) |
TEXTJOIN | One delimiter argument, reused everywhere | Yes | Can skip blanks with TRUE | Excel 2019 / Microsoft 365 |
How do you combine two columns into one cell?
Find the From and To columns
Open the mileage log. The entry rows start at row 6, with From in column
Band To in columnC. The first trip — Office to Client site — sits inB6andC6.Join them with the & operator
In a free cell such as
G6, type the formula below. The&gluesB6, the arrow separator, andC6into one string: Office → Client site.Add the date with TEXT()
To prefix the trip date from column
A, wrap it inTEXT()so it stays a readable date instead of collapsing to a serial number. This reads 1/6/2026 - Office → Client site.Or join a whole range with TEXTJOIN
To combine From, To, and Purpose (column
D) with the same separator and skip any blank cell, useTEXTJOIN. The second argumentTRUEignores empties so you never get a stray separator.Copy the formula down the column
Select the cell, then double-click the fill handle (the small square at the bottom-right of the selection) to copy the formula to every trip row in one move.
The rule for joins: any date or formatted number must pass through TEXT() first. Concatenation reads the cell's stored value, not what you see on screen — so 1/6/2026 becomes 46028 unless TEXT() converts it. The format string in quotes ("mm/dd/yyyy", "$#,##0.00", "0.0%") controls exactly how it renders.
TEXTJOIN shines on uneven data. =TEXTJOIN(", ",TRUE,A2:F2) builds a clean comma-separated list from six cells and silently drops the empty ones — no trailing commas, no IF gymnastics. Doing that with & would mean manually testing every cell for blanks.
Frequently asked questions
- How do I add a line break inside a joined cell?
- Use
CHAR(10)as the separator —=A2&CHAR(10)&B2— then turn on Home → Wrap Text for that cell. Without Wrap Text enabled the break exists but stays invisible on a single line. - Why does my date turn into a number like 46028 when I join it?
- Excel stores dates as serial numbers and concatenation reads the stored value, not the display. Wrap the date in
TEXT()—=TEXT(A2,"m/d/yyyy")— to force it back into readable form inside the joined string. - How do I convert the combined result to plain text?
- Select the formula cells, press
Ctrl+C, thenCtrl+Alt+Vand choose Values. This pastes the text the formulas produced and removes the formulas, so the result no longer depends on the source cells. - How do I split a combined cell back into separate columns?
- Select the column and use Data → Text to Columns, picking the delimiter you joined with. The full walkthrough is in how to split text into columns, including handling multiple separators.
- Should I ever use CONCATENATE in a new workbook?
- No.
CONCATENATEonly survives for backward compatibility and Microsoft now points users toCONCATandTEXTJOINinstead. The&operator does the same job with less typing, so reserveCONCATENATEfor opening old files.