CLEAN UP TEXT CONCATENATE Function in Excel a… Join two or more text strings into one combined… Excel 2003+ Google Sheets Same syntax Microsoft Excel C2 =CONCATENATE(text1, [text2], ...) A B C First Name Last Name Full Name 2 Alice Johnson Alice John… 3 Bob Williams Bob Williams 4 Carol Davis Carol Davis
Learning Hub Functions Clean Up Text

CONCATENATE Function in Excel and Google Sheets

Clean Up Text 📊 Excel 2003+ ✓ Google Sheets Same syntax in both apps
Purpose
Join two or more text strings into one combined string
Return value
A single text string containing all arguments joined together in order
CONCATENATE is the classic text-joining function and one of the most frequently used in data preparation. Combining a first name and last name column into a full name. Building a full address from street, city, and postcode fields stored separately. Constructing a dynamic file path or URL from component parts. Assembling a product description from category, code, and size fields. Any time data arrives split across multiple columns and needs to be combined into one, CONCATENATE or its shorthand & operator does the job. In modern Excel and Google Sheets, CONCAT accepts ranges and TEXTJOIN adds automatic delimiters between items — both are worth knowing as upgrades to CONCATENATE for longer joins. But CONCATENATE remains the most widely recognised and explicitly named version, making it the right starting point for understanding text joining in any spreadsheet.
Syntax
✓ Excel 2003+ ✓ Google Sheets = Same syntax
=CONCATENATE(text1, [text2], ...)
Modern alternative: =CONCAT(text1, text2, ...) accepts ranges. For delimiter-separated joins use TEXTJOIN.
Arguments
ArgumentRequiredDescription
text1 Required The first text string, cell reference, or formula result to include in the join. Numbers are automatically converted to text.
text2 ... Optional Additional text strings, cell references, or literal values to join, up to 255 arguments. Each is appended in order with no separator unless you include a quoted separator string as one of the arguments.
How it works
CONCATENATE joins its arguments in sequence from left to right, with no separator between them unless you include one explicitly as a quoted string argument. =CONCATENATE(A2,B2) runs A2 and B2 together with nothing between them. =CONCATENATE(A2," ",B2) places a space between them. The space, comma, hyphen, or any separator must be its own argument in quotes between the values it separates. Numbers are automatically converted to text, but dates become their underlying serial number — wrap dates in TEXT(date,"format") before joining to display them correctly. The & operator produces identical results with less syntax: =A2&" "&B2 is equivalent to =CONCATENATE(A2," ",B2). CONCAT is the modern upgrade that accepts ranges — =CONCAT(A2:A5) joins four cells without listing each one. TEXTJOIN adds a delimiter automatically between each item and can skip blank cells, making it the best choice for joining a variable number of values with a consistent separator.
Examples
1
Combine first and last name columns into a single full name column.
fx =CONCATENATE(A2," ",B2)
A B C
1 First Name Last Name Full Name
2 Alice Johnson =CONCATENATE(A2," ",B2)
3 Bob Williams Bob Williams
4 Carol Davis Carol Davis
5 Dan Lee Dan Lee
6 Eve Parker Eve Parker
Row 2: Alice Johnson — A2 (Alice) plus a space plus B2 (Johnson) gives Alice Johnson.
The space between Alice and Johnson is included as a separate quoted argument " " between A2 and B2. Without it, the result would be AliceJohnson with no space. This is the most common CONCATENATE pattern.
2
Build a full mailing address by joining street, city, and postcode fields with comma separators.
fx =CONCATENATE(A2,", ",B2,", ",C2)
A B C D
1 Street City Postcode Address
2 12 Oak Lane London SW1A 1AA =CONCATENATE(A2,", ",B2,", ",C2)
3 5 River Rd Manchester M1 2AB 5 River Rd, Manchester, M1 2AB
4 8 High St Bristol BS1 3CD 8 High St, Bristol, BS1 3CD
5 22 Park Ave Leeds LS1 4EF 22 Park Ave, Leeds, LS1 4EF
6 3 Mill Rd Birmingham B1 5GH 3 Mill Rd, Birmingham, B1 5GH
Row 2: 12 Oak Lane, London, SW1A 1AA — Street, a comma-space, City, a comma-space, and Postcode are joined into one formatted address string.
The separator ", " is included twice — once between Street and City, once between City and Postcode. Each separator is its own quoted argument positioned between the fields it separates. For a large number of fields, TEXTJOIN with a separator is more compact.
3
Construct a structured product identifier by joining category code, year, and sequence number with hyphens.
fx =CONCATENATE(A2,"-",B2,"-",TEXT(C2,"000"))
A B C D
1 Category Year Seq Product ID
2 PRD 2024 1 =CONCATENATE(A2,"-",B2,"-",TEXT(C2,"000"))
3 CAT 2024 12 CAT-2024-012
4 REG 2024 5 REG-2024-005
5 PRD 2024 100 PRD-2024-100
6 CAT 2024 8 CAT-2024-008
Row 2: PRD-2024-001 — Category PRD, hyphen, year 2024, hyphen, and sequence 1 formatted as three digits (001) gives PRD-2024-001.
TEXT(C2,"000") formats the sequence number with leading zeros so single-digit sequences display as 001 rather than 1 — keeping the ID format consistent across all rows. Without TEXT, the number is joined as-is with no padding.
Common use cases
1. Combine first and last name columns into a full name for display or export
=CONCATENATE(A2," ",B2)
2. Build a full postal address from separate street, city, and postcode fields
=CONCATENATE(A2,", ",B2,", ",C2)
3. Construct structured product or document IDs from category, year, and sequence components
=CONCATENATE(A2,"-",B2,"-",TEXT(C2,"000"))
4. Create a personalised email subject line by joining a name with a static text string
=CONCATENATE("Invoice for ",A2," - ",TEXT(B2,"DD MMM YYYY"))
5. Join a list of items in a range with a separator using TEXTJOIN as a modern alternative
=TEXTJOIN(", ",TRUE,A2:A10)
Common errors
Joined date shows as a large number like 45366
Dates in Excel are stored as serial numbers. CONCATENATE converts a date cell to its serial number rather than the formatted date string.
Fix: Wrap the date in TEXT before joining: =CONCATENATE(A2," - ",TEXT(B2,"DD/MM/YYYY")). The TEXT function formats the date as a string before it is joined.
Numbers lose formatting when joined
CONCATENATE converts numbers to plain text, stripping currency symbols, thousand separators, and percentage signs.
Fix: Wrap the number in TEXT: =CONCATENATE("Total: £",TEXT(B2,"#,##0.00")) preserves the currency format in the joined string.
Result has no space between joined values
The separator argument was omitted or the cell references were placed directly next to each other without a separator in between.
Fix: Add the separator as a quoted argument between the values: =CONCATENATE(A2," ",B2) not =CONCATENATE(A2,B2).
Tips and variations
Use & as a shorter alternative to CONCATENATE
The & operator produces identical results with less typing: =A2&" "&B2 is the same as =CONCATENATE(A2," ",B2). I default to & for two or three joins and switch to TEXTJOIN for longer or variable-length joins. Both are fully equivalent.
=A2&" "&B2
Use TEXTJOIN for range-based or delimiter-separated joins
TEXTJOIN(delimiter,ignore_blanks,range) joins all cells in a range with a consistent separator in one formula. =TEXTJOIN(", ",TRUE,A2:A10) joins up to ten cells, skips blanks, and puts a comma-space between each item. Far more efficient than chaining CONCATENATE for long lists.
=TEXTJOIN(", ",TRUE,A2:A10)
Wrap numbers and dates in TEXT to preserve formatting
CONCATENATE converts everything to raw text, stripping number formats and turning dates into serial numbers. Using TEXT(value,"format") before joining ensures the number or date appears in the joined string exactly as you want it displayed.
=CONCATENATE("Report: ",TEXT(B2,"DD MMM YYYY"))
Excel vs Google Sheets
Excel vs Google Sheets
CONCATENATE works identically in Excel 2003 and newer and every version of Google Sheets. CONCAT (the range-capable version) is available in Excel 2019+ and Google Sheets. TEXTJOIN is available in Excel 2019+ and Google Sheets. The & operator is available everywhere and produces the same result as CONCATENATE.
Frequently asked questions
CONCATENATE joins two or more text strings into a single combined string. =CONCATENATE("Hello"," ","World") returns Hello World. It is most commonly used to combine first and last names, build full addresses from separate fields, or construct structured identifiers from component parts.
They produce identical results. =CONCATENATE(A2," ",B2) and =A2&" "&B2 both join A2, a space, and B2 into one string. The & operator is shorter and more flexible — it can be chained without function syntax. CONCATENATE is included for users who prefer explicit function names over operators. In modern Excel and Google Sheets, CONCAT and TEXTJOIN are also available and often more practical.
CONCATENATE joins individual text arguments one by one and does not accept ranges. CONCAT is the modern replacement — it accepts both individual cells and ranges, so =CONCAT(A2:A10) joins all ten cells without listing each separately. TEXTJOIN adds a delimiter between each item and can skip blank cells: =TEXTJOIN(", ",TRUE,A2:A10) joins all non-blank cells with a comma and space separator.
Include the separator as a quoted text argument between the values: =CONCATENATE(A2," ",B2) adds a space between A2 and B2. For a comma and space: =CONCATENATE(A2,", ",B2). For a hyphen: =CONCATENATE(A2,"-",B2). The separator must be in its own argument, quoted, and placed between the values you want it to separate.
Yes, but numbers and dates are converted to text in the process. A date joined with CONCATENATE appears as its serial number unless you format it first with TEXT: =CONCATENATE(A2," - ",TEXT(B2,"DD/MM/YYYY")). A number is converted to text as-is, losing any currency or percentage formatting — wrap in TEXT if the formatted display matters.