How to combine text in Excel: &, CONCAT, TEXTJOIN and keeping number formats
Spreadsheet tools · Published
Join first and last names, build addresses and IDs, add separators, skip blanks, and keep dates and currency formatted when you combine cells.
The short answer
To join two cells, type =A2&" "&B2. The ampersand (&) glues pieces together, and the " " in quotes adds the space between them. For several cells with the same separator, use TEXTJOIN, which can also skip empty cells. Wrap dates and amounts in TEXT so they keep their format instead of turning into plain numbers.
If you only need to do it once and don't want a formula, type one example and press Ctrl+E for Flash Fill.
Join cells with the & operator
The & operator works in every version of Excel, on every device.
- Click the cell where you want the result, for example D2.
- Type
=, click the first cell, type&" "&, then click the next cell. - Press Enter, then drag the fill handle down to copy the formula to the other rows.
=A2&" "&C2In words: take A2, add a space, then add C2. Anything in double quotes is added exactly as typed, so =C2&", "&A2 gives "Lopez, Maria".
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | First | Middle | Last | Full name |
| 2 | Maria | Lopez | Maria Lopez | |
| 3 | James | T. | Chen | James Chen |
CONCATENATE and CONCAT
These functions do the same job as &, with each piece as a separate argument. Both of these return "Maria Lopez":
=CONCATENATE(A2," ",C2)=CONCAT(A2," ",C2)CONCATENATE works in all versions. Microsoft says CONCAT replaces it, but CONCATENATE stays available for compatibility. CONCAT's advantage is that it accepts a range, so =CONCAT(A2:C2) joins three cells, though with no spaces between them.
TEXTJOIN: one separator, and blanks skipped
Notice that James's middle initial was dropped above. If you add the middle column with =A2&" "&B2&" "&C2, Maria, who has no middle name, gets two spaces: "Maria Lopez". TEXTJOIN solves both problems.
=TEXTJOIN(" ",TRUE,A2:C2)It takes three arguments:
- delimiter: what goes between the pieces, here a space. Use
", "for a comma and space. - ignore_empty: TRUE skips blank cells; FALSE keeps them, which leaves doubled separators.
- text1 (and more): the cells or ranges to join, in order.
That returns "Maria Lopez" and "James T. Chen". TEXTJOIN is in Excel 2019 and later, Microsoft 365 and Excel for the web.
Worked example: one-line addresses
Here the street, unit, city and state are joined with a comma and space, and the ZIP code is added after a plain space. Row 3 has no unit, and TEXTJOIN skips it.
=TEXTJOIN(", ",TRUE,A2:D2)&" "&E2| Row | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 1 | Street | Unit | City | State | ZIP | Address line |
| 2 | 12 Oak St | Apt 4 | Denver | CO | 80203 | 12 Oak St, Apt 4, Denver, CO 80203 |
| 3 | 88 Pine Rd | Boston | MA | 02134 | 88 Pine Rd, Boston, MA 02134 |
With FALSE instead of TRUE, row 3 would read "88 Pine Rd, , Boston, MA". The ZIP codes are stored as text so that 02134 keeps its zero; see keeping leading zeros if yours have already lost theirs. If the addresses come from a CSV file, Filecon's CSV to Excel keeps ZIP codes with leading zeros as text when it builds the workbook, in your browser and without uploading the file.
Skipping blanks in older versions
Without TEXTJOIN, add the separator only when the cell isn't empty, using IF:
=A2&IF(B2="",""," "&B2)&" "&C2In words: if B2 is empty, add nothing; otherwise add a space and B2. This gives "Maria Lopez" and "James T. Chen" in any version. The address version is the same idea: =A2&IF(B2="","",", "&B2)&", "&C2&", "&D2&" "&E2.
Keep dates and money formatted with TEXT
When you join a date or a number, Excel uses the underlying value, not what the cell shows. A due date of 03/15/2026 comes out as 46096, which is how Excel stores that date, and $1,250.50 comes out as 1250.5. TEXT fixes this by turning the value into text in the format you choose.
="Invoice #"&A2&" – due "&TEXT(B2,"mm/dd/yyyy")TEXT takes the value (B2) and a format code in quotes. "mm/dd/yyyy" means two-digit month, day and four-digit year; "$#,##0.00" adds a dollar sign, thousands separators and two decimals.
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | Invoice | Due date | Amount | Description |
| 2 | 104 | 03/15/2026 | $1,250.50 | Invoice #104 – due 03/15/2026 |
| 3 | 105 | 04/01/2026 | $980.00 | Invoice #105 – due 04/01/2026 |
For the amount, the same pattern gives "Amount due: $1,250.50" for row 2:
="Amount due: "&TEXT(C2,"$#,##0.00")The dash in the example is an en dash; a normal hyphen works just as well. Other useful codes include "mmmm d, yyyy" for "March 15, 2026" and "0.0%" for percentages.
Put each piece on its own line
CHAR(10) is the line-break character. Use it as the separator, then turn on wrapping so Excel shows the breaks:
- Enter a formula such as
=A2&CHAR(10)&C2, or=TEXTJOIN(CHAR(10),TRUE,A2:C2). - Select the cells and choose Home › Wrap Text. Without it, the break is there but the text stays on one line.
No formula: Flash Fill
Flash Fill (Excel 2016 and later, including Microsoft 365) copies a pattern from an example you type.
- In D2, type the result you want for row 2, such as Maria Lopez.
- Select D3 and press Ctrl+E, or choose Data › Flash Fill.
- Check a few rows. If a pattern was misread, type a second example and repeat.
Flash Fill types plain values, not formulas, so the results don't change when the source cells do. Use a formula if the data will be updated.
Troubleshooting
#NAME?: your version doesn't have CONCAT or TEXTJOIN. Use & or CONCATENATE.- Words run together: add
" "between the pieces, or use TEXTJOIN with a space. - Double spaces or stray commas: a cell is empty, or it has extra spaces. Use TEXTJOIN with TRUE, and see how to clean up messy text for hidden spaces.
- A date shows as a five-digit number: wrap it in TEXT with a date code.
- The formula shows as text: the cell was formatted as Text before you typed it. Format it as General and enter the formula again.
- You want to delete the original columns: copy the results, then use Paste Special › Values first, or the formulas will break.
In short
Use & for quick joins, TEXTJOIN when you need a separator or want blanks skipped, and TEXT whenever a date or amount is involved. In older versions, & with IF does everything TEXTJOIN does. For one-off jobs, Flash Fill is quicker than any formula.