Analistable

How to combine two sheets in Excel

By the Analistable team · Updated · 2 min read

To put two sheets' rows into one list, enter =VSTACK(Sheet1!A1:D50, Sheet2!A2:D50) on a new sheet (Microsoft 365 or Excel 2024) — the first range includes the header, the second doesn't. In older versions, copy the second sheet's data rows under the first. If the sheets hold different columns about the same records, match them with XLOOKUP on a shared ID instead.

Part of our guide: How to combine Excel sheets into one

Stack or match?

Choose the method from the sheets' layout
Sheet 1Sheet 2Combine by
Orders for JanuaryOrders for February (same columns)Stacking rows
Customers (ID, name, city)Orders (ID, date, amount)Matching on ID

Stack two sheets with VSTACK

On a new sheet, in A1:

=VSTACK(Sheet1!A1:D50, Sheet2!A2:D50)

The first range brings the header row; the second starts at row 2 so its header isn't repeated. The result spills into as many rows as needed and updates when either sheet changes.

Empty cells in the source come through as 0 in a dynamic array. If some cells are blank, wrap the sources: =VSTACK(Sheet1!A1:D50, Sheet2!A2:D50)&"" turns everything into text (blanks stay blank), or trim the ranges to the exact data. To drop completely empty rows, see dynamic arrays for combining data.

Stack two sheets without formulas

  1. On Sheet2, select the data rows without the header (click row 2's number, then Ctrl+Shift+Down).
  2. Copy (Ctrl+C).
  3. On Sheet1, select the first empty cell in column A below the data (Ctrl+Down from A1, then one row down).
  4. Paste (Ctrl+V). Check the columns line up — paste matches by position.

Match two sheets side by side

When Sheet1 lists customers and Sheet2 lists orders, bring the order total next to each customer with:

=SUMIFS(Sheet2!D:D, Sheet2!A:A, A2)

or a single value with =XLOOKUP(A2, Sheet2!A:A, Sheet2!C:C, ""). SUMIFS adds every matching order; XLOOKUP returns the first one. The full set of join options is in joining spreadsheets.

Customers with totals pulled from the Orders sheet
Customer IDNameTotal orders (SUMIFS)
C-101Bakery Lune200
C-102Hart & Co0
C-103Nordic Supply75

More than two sheets?

The same VSTACK works with a 3D reference: =VSTACK(Jan:Dec!A2:D500) stacks every sheet from Jan to Dec. For a refreshable table, use Power Query Append. Both are covered in combining Excel sheets into one.

Check the result

  • The combined row count should equal Sheet1's rows plus Sheet2's rows (minus the second header).
  • Sort by each column and look at the top and bottom: text in a number column means the columns didn't line up.
  • If both sheets can contain the same record, check for duplicates on the key column with =COUNTIF(A:A, A2)>1.

Frequently asked questions

How do I combine two Excel sheets into one?
Use =VSTACK(Sheet1!A1:D50, Sheet2!A2:D50) in Microsoft 365, or copy the second sheet's data rows under the first. Use XLOOKUP if you want to match rows instead of stacking them.
Why does VSTACK show 0 in empty cells?
Dynamic arrays return 0 for references to empty cells. Append &"" to the formula or use IF(ISBLANK(...),"",...) to show blanks.
Can I combine two sheets and remove duplicates?
Yes: =UNIQUE(VSTACK(Sheet1!A2:D50, Sheet2!A2:D50)) stacks both and keeps one copy of each identical row.

Related guides