Excel guide · 3 min read
CONCAT vs TEXTJOIN vs &: which should you use?
=A2&" "&C2. Use TEXTJOIN when you need the same separator between many cells or want blanks skipped: =TEXTJOIN(", ",TRUE,A2:C2). CONCAT joins ranges with no separator, and CONCATENATE is the older version kept for compatibility. CONCAT and TEXTJOIN need Excel 2019 or later (or Microsoft 365).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 | |
|---|---|---|---|---|---|---|
| 1 | First | Middle | Last | City | State | Balance |
| 2 | Maria | Lopez | Austin | TX | 1250.5 | |
| 3 | James | R. | Chen | Denver | CO | 89 |
| 4 | Aisha | Khan | Portland | OR | 0 |
Download this sheet as an Excel practice file (.xlsx)
The & operator: quick and works everywhere
The ampersand joins whatever is on either side of it. It works in every version of Excel, Google Sheets and LibreOffice, and it is the easiest to read for a short join. You type separators yourself in quotes.
Pick & for two to four pieces. Beyond that, the chain of &" "& gets hard to read and easy to break.
Result: Maria Lopez
Maria Lopez.
CONCATENATE and CONCAT: the same idea as a function
CONCATENATE(A3," ",B3," ",C3) does exactly what & does, as a function. It works in all versions but only takes single cells: CONCATENATE(A3:C3) does not join the range in a normal formula.
CONCAT replaced it in Excel 2019. It accepts ranges, so =CONCAT(D2:E2) joins a whole row. But it has no separator and no way to skip blanks, so it is mostly useful for joining codes or parts that need nothing in between.
Result: AustinTX
AustinTX: the range is joined with nothing in between.
TEXTJOIN: separators and blank-skipping built in
TEXTJOIN(delimiter, ignore_empty, text1, ...) puts the delimiter between every item, and with TRUE as the second argument it skips empty cells. That second part is what makes it the right tool for names with an optional middle name, or addresses with an optional second line.
Maria has no middle name. =A2&" "&B2&" "&C2 gives "Maria Lopez" with two spaces. TEXTJOIN gives a clean single space.
Result: Maria Lopez
Maria Lopez, with one space, because the empty middle name is skipped.
Join a whole column into one cell
This is where TEXTJOIN has no real rival. Joining a list into one comma-separated cell with & would mean clicking every cell. TEXTJOIN does it with one range, which is handy for email lists or a summary line.
In Excel 365 you can join only the rows that match a condition by feeding it FILTER: =TEXTJOIN(", ",TRUE,FILTER(A2:A4,F2:F4>0)) lists the customers who owe money.
Result: Lopez, Chen, Khan
Lopez, Chen, Khan.
Numbers and dates lose their format
All four methods join the underlying value, not what the cell shows. A balance of 1,250.50 formatted as currency joins as 1250.5, and a date joins as its serial number. Wrap the value in TEXT with the format you want.
Result: Maria owes $1,250.50
Maria owes $1,250.50.
Common mistakes
Using CONCAT and expecting spaces
CONCAT never adds a separator. If you want one between every item, use TEXTJOIN; for one or two, add " " pieces with &.
Setting ignore_empty to FALSE by accident
With FALSE, TEXTJOIN keeps blanks and you get doubled separators like "Maria Lopez" or "Lopez, , Khan". Use TRUE unless you need the empty slots.
Sharing a file with someone on Excel 2016 or older
CONCAT and TEXTJOIN show #NAME? in Excel 2016 and earlier (perpetual license). Use & or CONCATENATE if the file must open there.
Hitting the length limit
A cell holds at most 32,767 characters. CONCAT and TEXTJOIN return #VALUE! when the result is longer; split the job across cells.
FAQ
Is CONCATENATE being removed from Excel?
No. Microsoft keeps it for compatibility and old formulas still work. It is just not getting new features, so CONCAT and TEXTJOIN are recommended for new work.
How do I add a line break between joined values?
Use CHAR(10) as the separator, for example =TEXTJOIN(CHAR(10),TRUE,A2:C2), then turn on Home > Wrap Text for the cell.
Can TEXTJOIN skip cells that contain a formula returning ""?
Yes. With ignore_empty set to TRUE it skips both truly empty cells and empty text from formulas.
What is the fastest way to combine columns without a formula?
Flash Fill. Type the first combined result next to your data, press Enter, then press Ctrl+E. Excel fills the rest, but the results will not update if the source changes.
Functions used
CONCATJoins textCONCATENATEJoins text (older)TEXTJOINJoins with a separatorTEXTNumber to formatted textFILTERKeeps matching rows, spills
Related guides
- How to concatenate with a space in Excel
- How to combine first and last name in Excel
- How to separate first and last name in Excel
- #NAME? error in Excel
- How to combine text with numbers and dates in Excel
- Excel formulas cheat sheet: the 25 everyone should know
Updated