Combine Columns

Open a workbook, pick two or more columns in order and a separator, and get a new column that joins them, as values or as a live formula. Dates and numbers are joined as they show. See the result first, then download your own file with the new column added.

Nothing is uploaded. Your file is edited in your browser and never sent anywhere.

Combine Columns is a free tool to combine columns in Excel: it joins two or more columns of one sheet into a new column, with the separator you choose, and hands back your own workbook with that column added. The usual file is a CRM export with First, Middle and Last in separate columns. The mail merge wants one Full name, and half the rows have no middle name.

How to combine columns in Excel with this tool

  1. Drop an .xlsx or .xlsm file of up to 50MB on the box, or click to browse. The file is read and edited in your browser and never uploaded.
  2. Pick the sheet, then click the columns to combine in the order you want them. Each is listed by letter and heading, such as "A: First". The arrows under the list move a column earlier or later.
  3. Choose a separator: Space, Comma and space, Comma, Dash, Nothing, or Custom, where you type any text.
  4. Leave "Skip blank cells" on. Check "The first row is a heading" if it isn't already (the tool guesses from the file) and name the new column. The default name joins the headings, so First and Last give "First Last".
  5. Choose how to write the column: Values, TEXTJOIN formula or & formula.
  6. Read the preview: the new column's letter, the rows it covers, the first 8 results and, for a formula, the formula for the first row with a copy button. Click "Add column K with N rows", then "Download .xlsx" ("Download .xlsm" for a macro-enabled file). A file called people.xlsx comes back as people (xlsx.com).xlsx, and an .xlsm stays an .xlsm with its macros.

What the new column holds, and where it goes

The new column lands to the right of everything on the sheet. That means past the last column holding any value or formula, and past any merged cells on the rows it writes, so it never overwrites data, lands inside a merge or covers a note someone typed off to the side in column R. The preview names the column before anything is written.

It runs from the first data row to the last row with anything in the chosen columns. With the heading box checked, the column's name goes in the heading row. An Excel table's totals row is left alone. Each new cell copies the formatting of the first chosen column's cell in its row, so the font, fill and borders match.

The original columns stay where they were. The rest of the workbook keeps its exact bytes, with no document properties added, and Excel recalculates when you open the file, so a SUM or lookup that covers the new column picks it up.

OutputWhat each cell holdsExcel versionsFollows changes to the source cells
ValuesThe combined textAnyNo
TEXTJOIN formula=TEXTJOIN(...) on that row's cells2019, 2021, 365Yes
& formula& joins, with IF and MID to skip blanksAnyYes

We opened all three outputs in Excel for Mac, with Skip blank cells on and off. Every file opened without a repair prompt, and Values, TEXTJOIN and & gave identical text, row for row, across dates in built-in and custom formats, currency and accounting formats, a percentage, a 17-digit number, TRUE, #N/A, empty text and a cell of spaces.

Why dates turn into numbers when you combine columns

A date in Excel is a number with a format on top, and & and TEXTJOIN join the number. Put an invoice date of 5 January 2026 next to an invoice number and =A2&" "&B2 gives "46027 INV-1043". Money goes the same way: $1,234.50 joins as 1234.5, and 13% as 0.13.

The fix every forum gives is TEXT, with a format code you write yourself for each column:

=TEXT(A2,"dd/mm/yyyy")&" "&B2

Combine Columns reads each cell's number format and joins what the cell shows. A date formatted dd/mm/yyyy joins as 05/01/2026, $1,234.50 stays $1,234.50 and 13% stays 13%. In the two formula outputs it writes the TEXT(cell,"format") wrapper for you, using that cell's own format, so the formula also joins what the cell shows.

Accounting and currency formats pad with _) and fill with *. The tool leaves those characters out, so no stray spaces appear in the middle of the text. A number in General format joins the way Excel writes it into text, to 15 significant digits: 1/3 becomes 0.333333333333333.

Blank cells and doubled separators

A plain & join puts a separator next to every cell, empty or not, so a missing middle name gives "Ann Lee" and a missing value in a comma list gives "Bob, ". TEXTJOIN's second argument fixes this in Excel 2019 and later: =TEXTJOIN(", ",TRUE,A2:C2) skips empty cells.

Older versions have no TEXTJOIN. The & formula output skips blanks with a pattern that works in any version:

=MID(IF(A2="","",", "&A2)&IF(B2="","",", "&B2),3,32767)

Each IF puts the separator in front of a cell that has something in it and returns nothing for a blank one. MID then cuts off the first separator: 3 is the separator's length plus one, and 32,767 is the most text a cell can hold. A row whose chosen cells are all blank gets nothing.

One catch. A cell holding only spaces isn't blank to TEXTJOIN, and it isn't blank to this tool either, so it still gets its separator. Run the file through Trim Spaces first: it turns a cell of nothing but spaces into a truly empty one.

Errors and very long results

An error in any chosen cell, such as #N/A from a lookup or #DIV/0!, makes that row's result the same error. TEXTJOIN and & do the same in Excel. The page counts those rows so you know how many to fix at the source. A joined result longer than 32,767 characters, Excel's cell limit, gives #VALUE!, as TEXTJOIN does.

Deleting the original columns afterwards

Pick Values if you plan to delete First and Last once Full name exists. A formula column reads its source cells, so deleting them turns every result into #REF!. The tool never deletes the originals; that step is yours, in Excel, after you've checked the new column.

Pick a formula output when the source columns stay and still get edited. The formulas update when a cell changes.

Combining columns in Excel without the tool

For one sheet with a few hundred rows, a helper column is quick. Type =A2&" "&B2 (or the TEXTJOIN version) next to the data and fill it down. To make it permanent, copy the column and use Home > Paste > Paste Values. You still write the TEXT wrappers for dates and money by hand.

Flash Fill (Data > Flash Fill, or Ctrl+E) copies a pattern from one typed example. The results are plain text that won't follow later edits, and it guesses badly when rows are inconsistent, such as some with a middle name and some without.

Power Query suits a monthly export you refresh. In the Power Query Editor (Data > From Table/Range), Add Column > Merge Columns adds the joined column and keeps the sources; Transform > Merge Columns replaces them.

Don't use Home > Merge & Center. It merges the cells and keeps only the upper-left value, which is the opposite of what you want.

Limits

  • One sheet per run. The result always goes in a new column to the right of the data. The original columns are kept, never replaced.
  • Formula outputs write English format codes. TEXT() codes such as m/d/yyyy and #,##0.00 are read in Excel's own language, so in Excel set to German, where dates are TT.MM.JJJJ, dates and numbers come out wrong. Choose Values there. The page says so too.
  • Excel's built-in short date joins as m/d/yyyy. That is the format that follows your computer's regional setting, and the tool joins it the way Excel shows it in the US. For UK-style text, give the column a custom dd/mm/yyyy format in Excel before combining.
  • Formula outputs are decided from today's cells. A cell that is blank now and gets a date later joins as its serial number, because no TEXT() was written around it.
  • Width and tables. The new column's width isn't set, and it isn't added to an Excel table next to it.
  • Protected sheets are refused. Remove the protection with Unprotect Sheet, then open the file here again.
  • No room past XFD. A sheet that already uses Excel's last column has nowhere to put a new one.
  • .xlsx and .xlsm only, up to 50MB. A legacy .xls is refused; open it in Excel and save it as .xlsx first.

A combined column often ends up as a lookup key, say Region and Product joined with a dash so one value identifies each row. The VLOOKUP Generator builds the formula that reads it.

Questions

How do I combine two columns in Excel without losing data?

Join them into a new column with a formula such as =A2&" "&B2, not with Merge & Center, which keeps only the upper-left value and throws the rest away. Fill the formula down the column. If you want to delete the original columns afterwards, copy the new column and paste it as values first, or the formulas turn into #REF!.

How do I combine first and last name in Excel?

With First in column A and Last in column B, =A2&" "&B2 gives the full name with a space between. With First, Middle and Last in A to C and some middle names missing, =TEXTJOIN(" ",TRUE,A2:C2) skips the empty cell so there is no double space; it needs Excel 2019 or later. Flash Fill works too: type the first full name by hand, then press Ctrl+E.

How do I combine columns with a comma in Excel?

Use TEXTJOIN with a comma and space as the separator: =TEXTJOIN(", ",TRUE,A2:D2). The TRUE tells it to skip empty cells, so a missing value doesn't leave two commas in a row. Versions before Excel 2019 have no TEXTJOIN, and there you need an IF around each cell to leave out the blanks.

Why does my date turn into a number when I concatenate?

Because Excel stores a date as a serial number and shows it through a format, and & and TEXTJOIN join the number without the format. 5 January 2026 is stored as 46027, so that is what ends up in the text. Wrap the date in TEXT with a format code, as in TEXT(A2,"dd/mm/yyyy"), and the result reads 05/01/2026.

How do I keep the currency format when combining cells in Excel?

Wrap the amount in TEXT with a currency format code, such as TEXT(B2,"$#,##0.00"). Without it, $1,234.50 joins as 1234.5, and a 13% cell joins as 0.13. This tool writes the TEXT wrapper from each cell's own number format when you pick a formula output.

What is the difference between CONCAT and TEXTJOIN?

TEXTJOIN puts the same separator between every item and can skip empty cells; CONCAT puts nothing between them. With CONCAT you type the separator as its own argument each time, as in CONCAT(A2," ",B2), and a blank cell still gets its space. Both need Excel 2019 or later or Microsoft 365, while & works in every version.