Excel Tutorials · Lesson 73

How to Use VSTACK in Excel

Two lists that should really be one is a common mess, whether it's this month's signups and last month's, or two exports from different systems. VSTACK joins them into a single array with one formula, and paired with UNIQUE, it hands back a clean, deduplicated list with no copy-pasting involved.

Return to Class

Download the Free Excel Xpert Workbook

The same free Excel Xpert companion workbook used in the video, one tab per lesson. No login, no email required.

⬇ Excel Xpert Workbook (.xlsx)

What VSTACK Does

VSTACK stacks two or more ranges or arrays vertically into one spilled array. Its syntax is =VSTACK(array1, array2, ...), and it takes as many ranges as you give it, joining them top to bottom in the order listed. On its own it does not deduplicate, sort, or filter anything, it just joins.

The requirement that trips people up is column count. Every range passed to VSTACK needs the same number of columns, since Excel has no way to reconcile a three-column list with a two-column one. Row counts, by contrast, can differ freely between the ranges.

Where VSTACK earns its place is combined with other dynamic array functions. Wrapped in UNIQUE, it merges two overlapping lists into one with no duplicates. Wrapped in SORT as well, that combined list comes out already alphabetized or numerically ordered, all from a single formula that updates itself as the source data changes.

The honest framing: VSTACK requires Excel 365 or Excel 2021 and later, since it is a dynamic array function. On older versions, the same result needs a helper-column workaround or manual copy-paste, both far more fragile than one live formula.

How to Use VSTACK in Excel

Step-by-step, matching the video above.

1

Identify your two lists

Confirm both ranges have the same number of columns. VSTACK can stack any number of rows, but the column counts must match.

2

Write the VSTACK formula

In an empty cell, type =VSTACK(List1,List2). Excel spills List2 directly beneath List1 as one continuous array.

3

Check for #VALUE! or #SPILL! errors

A #VALUE! error means the column counts don't match. A #SPILL! error means something is already sitting in the cells the array needs.

4

Wrap it in UNIQUE to remove duplicates

Change the formula to =UNIQUE(VSTACK(List1,List2)) so any entry that appeared in both lists only shows up once in the result.

5

Sort the result if needed

Add one more wrap: =SORT(UNIQUE(VSTACK(List1,List2))) alphabetizes or numerically sorts the combined, deduplicated list automatically.

6

Reference the source lists as Tables

Convert each source list to a Table (Ctrl+T) so new rows added to either one flow into the combined list without editing the formula.

7

Use the combined list

Reference the spilled range with the # suffix, such as B2#, in a dropdown, chart, or another formula so it always reflects the full combined list.

Worked Example: Two Overlapping Lead Lists
List AList B=UNIQUE(VSTACK(A,B))
Jordan ReyesPriya NairJordan Reyes
Priya NairMateo CruzPriya Nair
Sam ColeSam ColeSam Cole

List A and List B share two names: Priya Nair and Sam Cole. =UNIQUE(VSTACK(A2:A4,B2:B4)) stacks all six entries into one array, then collapses the two overlaps, spilling four unique names total instead of six with duplicates.

Each Piece Explained

Three functions, and the order they're nested in matters.

VSTACK — the join

Takes any number of ranges and stacks them vertically. Column counts must match across every range; row counts can differ freely.

UNIQUE — the cleanup

Wrapped around VSTACK's result, it removes any row that appears more than once, regardless of which source list it came from originally.

SORT — the finishing touch

Wrapped around UNIQUE, it orders the deduplicated result. =SORT(UNIQUE(VSTACK(A2:A10,B2:B10))) is the full pattern, evaluated inside out.

The # spill reference

Once a VSTACK formula spills, referencing the anchor cell with a trailing #, like D2#, points at the entire live result, useful for feeding it into a chart or a dropdown list.

HSTACK — the horizontal counterpart

=HSTACK(array1,array2) does the identical job sideways, joining ranges into more columns instead of more rows.

Common Setup Problems

Three errors, each with one specific cause.

#VALUE! — mismatched column counts

One range has more or fewer columns than the other. Trim both ranges down to the same column width before stacking them.

#SPILL! — blocked landing zone

Something already occupies the cells below or beside the formula. Clear that area, or move the formula to open space on the sheet.

#NAME? — wrong Excel version

VSTACK doesn't exist before Excel 2021/365. Confirm the version, or fall back to a helper-column approach if upgrading isn't an option.

Worked Example: Building a Combined Dropdown List
FormulaResult
=VSTACK(Team1,Team2)Every name, duplicates included
=UNIQUE(VSTACK(Team1,Team2))Every name, once each
=SORT(UNIQUE(VSTACK(Team1,Team2)))Every name, once each, alphabetized

The final formula's spilled range is exactly what a Data Validation dropdown or a chart's category axis needs, one clean list built from two source ranges without ever combining them by hand.

Practical Uses and the Google Sheets Version

Where combining ranges genuinely earns its place.

Merging exports from two systems

Two customer lists from different platforms, each with the same columns, combine into one clean master list without a manual copy-paste step.

Rolling monthly lists into one

Rather than appending each new month by hand, VSTACK a fixed set of monthly ranges once, and the combined list updates as each month's data changes.

Building a single dropdown from multiple source lists

A dropdown that needs to offer values from two separate lists (like an internal team list and an external contractor list) can point straight at the VSTACK output.

VSTACK in Google Sheets

Sheets has VSTACK with the same syntax and the same pairing with UNIQUE, so a formula built in Excel copies over without changes.

Common VSTACK Mistakes to Avoid

⚠️

Stacking ranges with different column counts

Excel has no way to reconcile a two-column list with a three-column one. Trim both to match before writing the formula, or a #VALUE! error is guaranteed.

⚠️

Forgetting UNIQUE and getting duplicates

VSTACK alone just joins the lists; it does not deduplicate. Overlapping entries between the two source lists show up twice unless UNIQUE wraps the whole thing.

⚠️

Not leaving room for the spill

The array needs empty cells below and to the right of the formula. Data sitting in that space causes a #SPILL! error instead of a result.

⚠️

Referencing a fixed range instead of a Table

A hard-coded range like A2:A50 stops picking up new rows once the source list grows past it. Reference a Table column instead so it expands automatically.

⚠️

Assuming VSTACK exists in older Excel

It only works in Excel 365 and 2021+. Opening the same file in Excel 2019 shows a #NAME? error where the formula used to work.

⚠️

Trying to edit the spilled cells directly

Only the anchor cell holds the formula. Typing into any other cell in the spill range breaks it, since those cells are calculated, not editable.

Beyond the Spreadsheet

You Just Merged Two Lists With a Formula.Updoot Never Splits Them in the First Place.

A single source of truth beats stacking two after the fact.

👥
You combine
Two exports into one employee list
Org Chart
Every employee already lives in one place
📈
You combine
This month's data with last month's
Budget & P&L
Every month is already connected and current
📋
You combine
Task lists from two different sheets
Project Page
Every task already lives on one board

Free 14-day trial. No credit card required.

Frequently Asked Questions

What does VSTACK do in Excel?

It stacks two or more ranges or arrays vertically into a single spilled array, joining lists that live in separate places into one continuous list.

What Excel version do I need for VSTACK?

Excel 365 or Excel 2021 and later. VSTACK is a dynamic array function and does not exist in Excel 2019 or earlier.

Does VSTACK remove duplicates on its own?

No. VSTACK only joins the lists together; duplicates from both lists remain unless VSTACK is wrapped inside UNIQUE.

How do I combine VSTACK with UNIQUE?

=UNIQUE(VSTACK(List1,List2)) stacks both ranges and then removes any duplicate that resulted, leaving one clean list with no overlap.

Can VSTACK combine more than two lists?

Yes. Add more ranges separated by commas, such as =VSTACK(List1,List2,List3), and all of them stack into one array in the order listed.

What happens if the lists have a different number of columns?

VSTACK returns a #VALUE! error. Every range passed to VSTACK needs the same number of columns, though row counts can differ freely.

Can I sort the combined list?

Yes. Wrap the whole thing once more: =SORT(UNIQUE(VSTACK(List1,List2))) stacks, deduplicates, and alphabetizes or numerically sorts the result in one formula.

Why am I getting a #SPILL! error?

Something is already occupying the cells the combined array needs to spill into. Clear that range, or move the formula to an empty area of the sheet.

Does the combined list update automatically?

Yes. Since VSTACK is a live formula, adding a row to either source list updates the combined output the moment the source range is referenced as a Table or a full column.

Is there a horizontal version of VSTACK?

Yes, HSTACK. It works identically but combines ranges side by side into more columns instead of stacking them into more rows.

Does VSTACK work in Google Sheets?

Yes, Sheets added VSTACK with the same syntax and behavior, including pairing it with UNIQUE the same way.

What did people use before VSTACK existed?

Manually copy-pasting one list underneath the other, or building a helper column with IFERROR and INDEX formulas to fake a combined list, both far more fragile than a single VSTACK formula.

Ready to stop hunting for numbers across a grid?

Every business starts with a spreadsheet. Updoot is where you scale past it, with data already connected to where it belongs.

Start Your Free Trial →