Skip to content
ArumSoft Learning
KO

    The 20 Most-Used Excel Functions · Tutorial 16 of 20

    How to Join Text in Excel: CONCAT, TEXTJOIN and &

    Combine names, codes and lists into one cell with the & operator, CONCAT and TEXTJOIN, with spaces, separators, line breaks and number formats where you want them.

    Level
    Beginner
    Time
    11 min read
    Updated:
    Applies to:
    Excel for Microsoft 365, Excel 2021, Excel 2019, Excel for the web. CONCAT and TEXTJOIN need Excel 2019 or later; the & operator works in every version.
    FILTER keeps the names with Yes, TEXTJOIN lists them, and COUNTIF adds the count in front.
    Example: FILTER keeps the names with Yes, TEXTJOIN lists them, and COUNTIF adds the count in front.

    What you'll learn

    • Join cells and typed text with the & operator
    • Combine values and ranges with CONCAT
    • Join a range with a separator and skip empty cells with TEXTJOIN
    • Add spaces, punctuation and line breaks between the pieces
    • Keep number and date formats in joined text with TEXT

    Before you start

    None — this is a good first tutorial.

    Function Playground

    Try these functions in a live sheet

    Type formulas in an Excel-style grid and watch each step of the calculation. Free, no sign-up.

    Joining text puts the contents of several cells into one: a first and last name into a full name, three codes into a product SKU, a column of email addresses into one line you can paste into a message. Excel gives you three tools for it: the & operator, the CONCAT function, and TEXTJOIN, which puts a separator between the pieces for you and can skip empty cells.

    The syntax

    The & operator
    =text1&text2
    =CONCAT(text1, [text2], ...)
    =TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)
    • & joins the value on its left to the value on its right. Chain as many as you need: =A2&" "&B2 is three pieces.
    • text1, text2, … are the pieces to join: cell references, numbers, text in double quotes or other formulas. CONCAT and TEXTJOIN also accept ranges such as A2:D2. text1 is required; the rest are optional.
    • delimiter (TEXTJOIN, required) is the text placed between every two pieces, such as ", " or " ". Use "" for nothing.
    • ignore_empty (TEXTJOIN, required): TRUE skips empty cells; FALSE keeps them, which leaves two separators side by side.

    None of them adds spaces on its own. Anything you want between the pieces (a space, a comma, a hyphen) you type yourself, inside double quotes.

    Reading a joining formula
    =A2&" "&B2&" ("&C2&")"
    1. A2The first name
    2. &Glues the next piece on. You need one between every two pieces
    3. " "A space, typed as text in double quotes
    4. B2The last name
    5. " ("A space and an opening parenthesis
    6. C2The department
    7. ")"The closing parenthesis

    Join first and last names

    The sheet below lists five employees, with first names in column A, last names in column B and departments in column C. The goal is a full name in column D.

    1. Click the cell for the result

      Click D2.

      ABCDE
      1First nameLast nameDepartmentFull nameName tag
      2AnaLopezSales
      3BenCarterHR
      4ChloeKimFinance
      5DavidParkMarketing
      6EmmaWilsonIT
      First names in column A, last names in column B and departments in column C. The full names go in column D.
    2. Type the formula

      Type =A2&" "&B2. Read it as "A2, then a space, then B2". The space goes in double quotes because it's text you're adding, not a cell.

      ABCDE
      1First nameLast nameDepartmentFull nameName tag
      2AnaLopezSales=A2&" "&B2
      3BenCarterHR
      4ChloeKimFinance
      5DavidParkMarketing
      6EmmaWilsonIT
      While you type, A2 and B2 are colored in the formula and outlined in the same colors on the sheet.
    3. Press Enter and fill down

      Press Enter. D2 shows Ana Lopez. Drag the fill handle at the bottom-right corner of D2 down to D6, or select D2:D6 and press Ctrl+D. Each row joins its own first and last name.

      =A2&" "&B2
      ABCDE
      1First nameLast nameDepartmentFull nameName tag
      2AnaLopezSalesAna Lopez
      3BenCarterHRBen Carter
      4ChloeKimFinanceChloe Kim
      5DavidParkMarketingDavid Park
      6EmmaWilsonITEmma Wilson
      Filled down, column D holds all five full names.

    Leave out the space and =A2&B2 returns AnaLopez. You can keep chaining pieces: the name tag formula from the anatomy above, =A2&" "&B2&" ("&C2&")", returns Ana Lopez (Sales) in E2.

    ABCDE
    1First nameLast nameDepartmentFull nameName tag
    2AnaLopezSalesAna LopezAna Lopez (Sales)
    3BenCarterHR
    4ChloeKimFinance
    5DavidParkMarketing
    6EmmaWilsonIT
    The name tag joins three cells and three pieces of typed text: a space, a space with an opening parenthesis, and a closing parenthesis.

    CONCAT: the same job as a function

    CONCAT takes the pieces as a list instead of linking them with &. This returns Ana Lopez, exactly like the formula above:

    =CONCAT(A2," ",B2)

    Unlike &, CONCAT also accepts a range. =CONCAT(A2:C2) returns AnaLopezSales: every cell in the range, with nothing in between. That's handy for codes that are meant to run together, but for words you usually want a separator, which is what TEXTJOIN is for.

    You may also see CONCATENATE in older workbooks. It's the earlier version of CONCAT, still there so old files keep working, and it doesn't take ranges: you list every cell. Use CONCAT or & in new formulas.

    TEXTJOIN: one separator, and empty cells skipped

    When every piece gets the same separator, TEXTJOIN saves you typing it again and again. The sheet below splits two mailing addresses over four columns. The second address has no unit number, so B3 is empty.

    ABCDE
    1StreetUnitCityState and ZIPMailing address
    212 Main StApt 4BFort LeeNJ 0702412 Main St, Apt 4B, Fort Lee, NJ 07024
    388 Oak AveHackensackNJ 07601=TEXTJOIN(", ",TRUE,A3:D3)
    TEXTJOIN joins the whole range A3:D3, putting a comma and a space between the pieces.
    =TEXTJOIN(", ",TRUE,A2:D2)

    In E2 this returns 12 Main St, Apt 4B, Fort Lee, NJ 07024. Filled down to E3, it returns 88 Oak Ave, Hackensack, NJ 07601: because the second argument is TRUE, the empty B3 is skipped along with its separator.

    ABCDE
    1StreetUnitCityState and ZIPMailing address
    212 Main StApt 4BFort LeeNJ 0702412 Main St, Apt 4B, Fort Lee, NJ 07024
    388 Oak AveHackensackNJ 0760188 Oak Ave, Hackensack, NJ 07601
    Both addresses joined. Row 3 has no empty gap where the unit would be.

    Change TRUE to FALSE and row 3 returns 88 Oak Ave, , Hackensack, NJ 07601, with a doubled comma where the empty cell was. Joining the four cells with & gives the same doubled comma, because & has no way to skip anything.

    Put each piece on its own line

    CHAR(10) is the line break character, the same one you type inside a cell with Alt+Enter. Use it as the delimiter to stack the address like a label:

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

    Then turn on Home then Alignment then Wrap Text for the cell. Until you do, the cell shows everything on one line. With & it works the same way: =A2&CHAR(10)&B2.

    Real-world scenarios

    Inventory

    Build product SKUs

    A clothing shop codes each item by category, size and color. The SKU joins the three codes with hyphens.

    ABCDE
    1ProductCategorySizeColorSKU
    2T-shirtTSMBLUTS-M-BLU
    3HoodieHDLGRYHD-L-GRY
    4CapCPOSBLKCP-OS-BLK
    Each SKU joins three codes with hyphens typed between them.
    =B2&"-"&C2&"-"&D2

    E2 returns TS-M-BLU. Because every separator is the same, =TEXTJOIN("-",TRUE,B4:D4) does the same job for the cap in row 4 and returns CP-OS-BLK.

    School

    One line of parent emails

    A teacher wants to email every parent at once. One student, Liam, has no email on file.

    AB
    1StudentParent email
    2Miarivera.home@example.com
    3Noahs.chen@example.net
    4Liam
    5Zoepatel.family@example.org
    6Avaj.okafor@example.com
    7
    8Send torivera.home@example.com; s.chen@example.net; patel.family@example.org; j.okafor@example.com
    TEXTJOIN joins the four email addresses and skips Liam's empty cell.
    =TEXTJOIN("; ",TRUE,B2:B6)

    B8 returns the four addresses separated by semicolons, with no gap for B4. Copy B8 and paste it into the To box of a new email. Outlook separates addresses with semicolons; if your mail app wants commas, use ", " as the delimiter.

    Budget

    A budget summary in words

    You track your monthly budget and want a sentence for each category instead of a bare number.

    ABCD
    1CategoryBudgetSpentSummary
    2Groceries400389Groceries: 97% of budget used
    3Eating out150171Eating out: 114% of budget used
    4Transport12084Transport: 70% of budget used
    TEXT turns each share of the budget into a percentage before it's joined.
    =A2&": "&TEXT(C2/B2,"0%")&" of budget used"

    D2 returns Groceries: 97% of budget used, because 389 ÷ 400 is 0.9725 and the format code 0% shows it as 97%. Without TEXT, the same sentence reads Groceries: 0.9725 of budget used.

    Events

    Who's coming, in one cell

    You collect yes/no replies for a team dinner and want a single line with the headcount and the names. This combines TEXTJOIN with COUNTIF and FILTER.

    AB
    1NameComing?
    2AnaYes
    3BenNo
    4ChloeYes
    5DavidYes
    6EmmaNo
    7FinnYes
    8
    9Guest list4 coming: Ana, Chloe, David, Finn
    FILTER keeps the names with Yes, TEXTJOIN lists them, and COUNTIF adds the count in front.
    =COUNTIF(B2:B7,"Yes")&" coming: "&TEXTJOIN(", ",TRUE,FILTER(A2:A7,B2:B7="Yes"))

    FILTER returns the four names whose reply is Yes, TEXTJOIN turns them into one comma-separated list, and COUNTIF counts the same four replies. B9 shows 4 coming: Ana, Chloe, David, Finn. FILTER needs Excel 2021 or Microsoft 365.

    Which one should you use?

    &CONCATCONCATENATETEXTJOIN
    Available inEvery versionExcel 2019 and laterEvery versionExcel 2019 and later
    Joins a range like A2:D2NoYesNoYes
    Separator between piecesYou type each oneYou type each oneYou type each oneAdded for you
    Skips empty cellsNoAdds nothing for themAdds nothing for themYes, with TRUE
    Good forA few pieces with different text between themCodes that run togetherOlder workbooksLists and ranges with the same separator

    Keep number and date formats

    A number's format (currency signs, thousands separators, decimal places) is only how the cell displays it. When you join the number, Excel uses the plain value underneath. If B2 holds 12500 formatted as currency, ="Total: "&B2 returns Total: 12500. Dates come out worse: Excel stores them as serial numbers, so 15 March 2026 joins as 46096.

    Wrap the value in TEXT with a format code to choose how it appears:

    ="Total: "&TEXT(B2,"$#,##0.00")

    With 12500 in B2, this returns Total: $12,500.00. For a date in C2, ="Due "&TEXT(C2,"mmm d, yyyy") returns Due Mar 15, 2026. The TEXT guide lists the format codes.

    Common mistakes

    • Text without quotes. =A2&Sales returns #NAME?, because Excel reads Sales as a name it doesn't know. Put typed text, including spaces and punctuation, in double quotes: =A2&" Sales".
    • Forgetting the spaces. =A2&B2 gives AnaLopez. Add " " between the pieces, or use TEXTJOIN(" ",TRUE,…).
    • Numbers and dates that lose their format. A joined price shows every decimal, and a joined date shows a number such as 46096. Wrap them in TEXT.
    • Doubled separators. With ignore_empty set to FALSE, or with &, an empty cell leaves , , in the result. Use TEXTJOIN with TRUE.
    • A range in CONCATENATE. CONCATENATE doesn't join a range into one value. Use CONCAT or TEXTJOIN, or list the cells one by one.
    • #NAME? in an older Excel. Versions before Excel 2019 that aren't Microsoft 365 don't have CONCAT or TEXTJOIN. If a workbook must open there, use &.
    • A result that's too long. A cell holds at most 32,767 characters. If CONCAT or TEXTJOIN would return more, you get #VALUE!.

    Practice

    Practice

    Build names, tags and a team list

    Use the sheet below. Click a highlighted cell, type a formula in the bar above the sheet and press Enter. Afterwards, try it in Excel itself:

    1. Type the first and last names of five people you know in columns A and B, and a role or team for each in column C.
    2. In column D, join each first and last name with & and a space, and fill the formula down.
    3. In column E, build a tag such as Ana Lopez (Sales).
    4. Below the list, use TEXTJOIN to put all the full names in one cell, separated by commas.
    5. Join one of the names with CHAR(10) instead of a space and turn on Wrap Text to see the line break.

    Try it0 of 4 done

    1. In D2, join the first name in A2 and the last name in B2 with a space between them.
    2. In E2, build a name tag: the full name, a space and the department in parentheses.
    3. In D3, build the full name again, this time with CONCAT.
    4. In B8, list all five departments in one cell, separated by a comma and a space.

    Click a dashed cell, type a formula in the bar and press Enter.

    ABCDE
    1First nameLast nameDepartmentFull nameName tag
    2AnaLopezSales
    3BenCarterHR
    4ChloeKimFinance
    5DavidParkMarketing
    6EmmaWilsonIT
    7
    8Departments

    Related

    Was this guide helpful? Spot a mistake? Send feedback · admin@arumsoft.com