Join Text with a Delimiter

Excel Formulas › Text

Excel 2019+TEXTJOINCONCAT

To stitch a range of cells into one string — a comma-separated list, a full address, tags on one line — use TEXTJOIN. Unlike old-school & chains, it takes a whole range and skips blanks for you.


Quick formula: to join A2:A6 with a comma and a space, ignoring blanks:
=TEXTJOIN(", ", TRUE, A2:A6)
Argument 1 is the delimiter, argument 2 (TRUE) skips empty cells, and the rest is the range to join.

Functions used (tap for the full reference guide):

The example

Separate tags joined into a single, readable list.

AB
1TagJoined
2redred, blue, green
3blue
4
5green

The formula

The joined list (note the blank in A4 is skipped):

=TEXTJOIN(", ", TRUE, A2:A5) // → "red, blue, green"

How it works

TEXTJOIN does three jobs at once:

  1. The first argument, ", ", is placed between items — not after the last one.
  2. The second argument, TRUE, tells it to ignore empty cells, so blanks don’t create ", ," gaps. Set it to FALSE to keep them.
  3. The third argument is the range (or several ranges/values) to join. It reads them in order.
  4. The result is one tidy string — "red, blue, green".

TEXTJOIN vs CONCAT vs &. & and CONCAT just glue values with no delimiter and no blank-skipping. TEXTJOIN adds the separator and skips blanks — far better for lists.

Try it: interactive demo

Live demo

Edit the items and delimiter; watch TEXTJOIN build the string (blanks skipped).

Joined:

Variations

Join with line breaks (stacked list)

Use CHAR(10) as the delimiter and turn on Wrap Text:

=TEXTJOIN(CHAR(10), TRUE, A2:A5)

Join only items that meet a condition

Combine with FILTER (Excel 365) — join only the red-group tags:

=TEXTJOIN(", ", TRUE, FILTER(A2:A5, B2:B5="red"))

Build a full name or address

Mix ranges and literals:

=TEXTJOIN(" ", TRUE, B2, C2, D2)

Pitfalls & errors

TEXTJOIN needs Excel 2019+. Excel 2016 and older show #NAME?. Use a & chain or CONCATENATE there (without blank-skipping).

#VALUE! — too many cells. TEXTJOIN caps the result at 32,767 characters. Joining an enormous range can overflow; join a smaller set.

Numbers lose their formatting. TEXTJOIN uses the underlying value, so $1,200 may join as "1200". Wrap the cell in TEXT first: TEXT(B2,"$#,##0").

Practice workbook

📊
Download the free Join Text with a Delimiter practice workbook
The tag list with live TEXTJOIN, the line-break and conditional versions, plus 4 challenges with answers. No sign-up required.

Frequently asked questions

How do I join text from multiple cells in Excel?
Use =TEXTJOIN(", ", TRUE, A2:A6). The first argument is the delimiter placed between items, TRUE skips blank cells, and the last argument is the range to join.
What's the difference between TEXTJOIN and CONCAT?
CONCAT (and &) simply glue values together with no delimiter and no blank handling. TEXTJOIN inserts a delimiter between items and can skip empty cells, which is what you want for lists.
How do I join text with a line break?
Use CHAR(10) as the delimiter: =TEXTJOIN(CHAR(10), TRUE, A2:A5), then enable Wrap Text on the cell so the breaks display.

Stop fighting formulas. Learn them in a day.

This recipe is one of hundreds of real-world formulas we teach. Our Excel Formulas & Functions class covers lookups, logic, text, and dynamic arrays hands-on — live in Dallas–Fort Worth, Houston, Austin, Oklahoma City, Denver, or online.

See the Formulas & Functions Class

Related formulas: Split text into columns · Clean up messy text · Extract first & last name

Function references: TEXTJOIN · CONCAT