How to Combine Ranges With Choose in Excel

Learn multiple Excel methods to combine ranges with CHOOSE with step-by-step examples and practical applications.

excelformulaspreadsheettutorial
13 min read • Last updated: 7/2/2025

How to Combine Ranges With Choose in Excel

Why This Task Matters in Excel

Imagine you have several blocks of data that are not next to each other—sales quantities in column B, discounts in column E, and shipping costs in column H—and you need to analyse them together. In a database system you might build a view, but in Excel most built-in lookup and aggregation functions expect their source data to live in a single, contiguous range. The ability to combine ranges on the fly is therefore an essential skill for anyone who regularly manipulates data in spreadsheets.

Business intelligence teams routinely pull data from multiple exports: an ERP dump with product information, a CRM extract with customer details, and a logistics file with delivery times. None of these datasets is likely to arrive perfectly aligned. Consolidating them quickly, without copying or re-ordering columns, can be a game-changer when reporting deadlines loom. Marketing analysts frequently need to mash up paid-spend tables, web-traffic logs, and offline conversion sheets. Finance professionals reconcile nominal-ledger lines that are scattered across tabs or interleaved with blank helper columns.

Excel’s CHOOSE function, when paired with dynamic arrays (available in Microsoft 365 and Excel 2021+), offers a surprisingly elegant approach to this problem. By feeding CHOOSE a small array of index numbers and multiple ranges, you can instantly splice those ranges together horizontally or vertically—without moving any source data. The combined output can then flow straight into newer functions such as FILTER, SORT, UNIQUE, XLOOKUP, or even be spilled into a PivotTable cache.

Failing to master this technique usually results in cumbersome workarounds: copying columns into temporary sheets, building slow INDEX-MATCH constructions, or relying on error-prone manual reordering. Knowing how to combine ranges with CHOOSE therefore reduces maintenance overhead, improves file performance, and—perhaps most importantly—keeps your source data intact, which is critical for auditability and collaboration.

Finally, this skill intersects with many other Excel workflows: data cleansing with Power Query, advanced charting that references dynamic named ranges, and VBA automation scripts that expect single-block inputs. Learning it now will pay dividends across almost every project you touch.

Best Excel Approach

The most versatile method to combine non-contiguous ranges in modern Excel is:

  1. Supply CHOOSE with an array of sequential numbers representing the order you want.
  2. Provide each range you wish to stitch together as a separate argument.
  3. Let Excel’s dynamic array engine “spill” the result automatically.

Syntax blueprint:

=CHOOSE({1,2,3}, Range1, Range2, Range3)
  • [1,2,3] tells CHOOSE that it should output argument 1, then argument 2, then argument 3 side-by-side (horizontal) or stacked (vertical) depending on the separator (, vs ;).
  • Range1, Range2, Range3 can be any equally-sized ranges—columns, rows, or rectangular blocks. They do not need to be adjacent in the worksheet.
  • The function returns a single dynamic array that can feed directly into formulas such as FILTER or INTO a spill range on the sheet.

Why is this approach usually best?

  • Pure formula solution: no helper columns, no Power Query refresh latency.
  • Fully dynamic: if any source range resizes (Excel Tables or structured references), the combined output instantly adjusts.
  • Zero duplication: data never leaves its original location, so there is no risk of overwriting.
  • Compatible with other dynamic functions: once the data is in one array, any of the modern analysis functions can process it.

When might you choose an alternative? If you need very large joins across millions of rows, Power Query or Power Pivot could outperform formulas. But for day-to-day work under a few hundred thousand rows, CHOOSE is usually faster to build, easier to audit, and instantly updateable.

Parameters and Inputs

Before writing the formula, confirm these inputs:

  • Index Array – a constant array like [1,2] or [1;2] depending on whether you need a horizontal or vertical combination. Commas create columns; semicolons create rows.
  • Range Arguments – two or more equally-sized ranges. Each can be a traditional cell reference such as [A2:A21] or a structured column like Sales[Amount]. Ranges must be the same height when combining horizontally and the same width when stacking vertically.
  • Data Types – CHOOSE does not coerce types, so numeric ranges mixed with text are fine; the result preserves each cell’s underlying type.
  • Array Size Limits – Excel’s dynamic array engine can spill up to the grid limit (1,048,576 rows × 16,384 columns), but performance drops beyond roughly 100,000 cells on older hardware.
  • Sheet Visibility – ranges may reside on different worksheets. Reference them explicitly (e.g., Sheet2!G2:G100).
  • Volatile Considerations – CHOOSE itself is non-volatile; recalculation triggers only when any referenced range edits.
    Edge Cases: Mismatched row counts (for horizontal merges) or column counts (for vertical merges) throw #VALUE!. Empty ranges spill blank cells, which can look like missing data in later formulas—filter them out with WRAPCOLS or FILTER if necessary.

Step-by-Step Examples

Example 1: Basic Scenario

Suppose you maintain a simple order log:

  • Quantity in [B2:B11]
  • Unit Price in [D2:D11]
  • Discount Rate in [F2:F11]

Your manager asks for a quick view showing quantity next to discount, skipping unit price. Instead of copying columns into a new sheet, combine them in place.

  1. Click in an empty cell, say H2.
  2. Enter the formula:
=CHOOSE({1,2}, B2:B11, F2:F11)
  1. Press Enter. Excel immediately spills two columns by ten rows. Column H displays quantity; Column I shows discount.
  2. Label H\1 = “Qty” and I\1 = “Disc” for clarity (labels are not part of the formula; they live in header cells).

Why this works: [1,2] (comma-separated) directs Excel to output argument 1 then argument 2 side-by-side. Because both ranges have identical heights (10 rows), the combined array is perfectly rectangular.

Common variations:

  • Reverse the order with [2,1].
  • Combine three columns with [1,2,3].
  • Stack the same ranges vertically with semicolons:
=CHOOSE({1;2}, B2:B11, F2:F11)

This returns one column of quantity followed by one column of discount beneath it—useful for chart source data.

Troubleshooting tips:

  • If you accidentally include mismatched ranges (e.g., B2:B11 and F2:F12), Excel returns #VALUE!. Ensure equal sizes or wrap with TAKE to trim.
  • If the spill range collides with existing content, Excel displays #SPILL!. Clear the obstruction or relocate the formula.

Example 2: Real-World Application

Scenario: You receive monthly CSV exports from three different departments:

  • Marketing leads in Leads!A2:D1000 (ID, Source, Region, Date)
  • Sales revenue in Sales!B2:E1000 (ID, Product, Revenue, Rep)
  • Support tickets in Support!C2:D1000 (ID, Severity)

Management wants a single data block with ID, Source, Revenue, Severity so they can run one master PivotTable.

Step-by-step:

  1. Ensure each export is converted to an Excel Table (Ctrl+T) and named tblLeads, tblSales, and tblSupport respectively.
  2. Confirm that ID appears in the same row order for all three tables. If not, insert a helper column with a sequential index or use SORTBY first.
  3. In an integration sheet, click A2 and enter:
=CHOOSE({1,2,3,4},
        tblLeads[ID],
        tblLeads[Source],
        tblSales[Revenue],
        tblSupport[Severity])
  1. Press Enter. The function spills four columns wide by 999 rows deep (assuming 999 data rows).
  2. Add headers in row 1: ID, Source, Revenue, Severity.
  3. Insert a PivotTable pointing to the spill range: =CHOOSE(...) itself. Thanks to Excel’s “Let’s name the spill” shorthand, if your formula is in A2, you can reference A2# (the # symbol means “the entire spill range”).
  4. Build the Pivot: Rows = Source, Values = Sum of Revenue, Filters = Severity.

Business value: No copy-paste needed. Next month, when you paste new CSVs over the tables, the spill updates and the PivotTable refreshes automatically.

Integration with other features: You could wrap the CHOOSE inside FILTER to remove rows where Severity is blank:

=FILTER(
   CHOOSE({1,2,3,4},
          tblLeads[ID],
          tblLeads[Source],
          tblSales[Revenue],
          tblSupport[Severity]),
   tblSupport[Severity]<>"")

Performance considerations: Four columns by 50,000 rows recalculates instantly on a modern CPU. If you approach 500,000 rows, consider running the consolidation in Power Query to avoid large workbook sizes.

Example 3: Advanced Technique

Objective: Build a dynamic two-way lookup across non-contiguous ranges for a dashboard. Your workbook contains:

  • Costs by quarter in [Financials!B4:E9] (Product × Quarter matrix).
  • Revenues by quarter in [Financials!H4:K9].
  • A slicer cell RevenueOrCost in Dashboard sheet that toggles between \"Revenue\" and \"Cost\".
  • A dropdown to pick quarter (Q1-Q4).

Instead of writing separate INDEX-MATCH formulas for each measure, you can create a single range that morphs based on the toggle.

  1. Define two named ranges: rngCost = Financials!B4:E9, rngRevenue = Financials!H4:K9. Both are 6 rows × 4 columns.
  2. In Dashboard !B3, enter:
=LET(
   dataset, IF(RevenueOrCost="Revenue", rngRevenue, rngCost),
   colIndex, XMATCH(SelectedQuarter, ["Q1","Q2","Q3","Q4"]),
   rowIndex, XMATCH(SelectedProduct, Financials!A5:A10),
   INDEX(dataset, rowIndex, colIndex))
  1. Now combine the two ranges into one list for a dynamic chart. Use:
=CHOOSE({1,2}, rngCost, rngRevenue)

The chart’s source is Dashboard!D12#.

Why this is advanced:

  • The formula merges entire matrices, not single columns.
  • The output feeds dynamic charts and selections in real time.
  • The same CHOOSE construction is wrapped by LET for readability and by other functions (INDEX, XMATCH) for interactive dashboards.

Professional tips:

  • Use structured references for bullet-proof range sizing.
  • Encapsulate complex CHOOSE logic inside named formulas to hide clutter.
  • Consider the MAKEARRAY function (Excel 2023+) for programmatic range generation, but CHOOSE remains simpler for fixed blocks.

Tips and Best Practices

  1. Match Dimension First – Always confirm that all ranges have identical row counts (for horizontal combos) or identical column counts (for vertical combos). Use ROWS or COLUMNS to verify.
  2. Convert to Tables – If source data may grow, convert each block into an Excel Table. CHOOSE will automatically pick up added rows without rewriting the formula.
  3. Descriptive Names – Assign short but meaningful range names (e.g., rgRevenue, rgCost). Your formula reads like a sentence and is easier to audit.
  4. Use LET for Clarity – For complicated merges, wrap CHOOSE inside LET to break logic into digestible variables and reduce duplicate calculations.
  5. Spill References Smartly – In downstream formulas or charts, reference the spill range with the # suffix (A2#). This ensures your links auto-resize.
  6. Document the Index Array – Put a comment near the formula that explains comma vs semicolon orientation. Future editors may not remember that a semicolon stacks vertically.

Common Mistakes to Avoid

  1. Mismatched Sizes – Trying to combine [A2:A10] with [D2:D12] triggers #VALUE!. Solution: make sizes equal with TAKE or pad the shorter range.
  2. Spill Collision – Forgetting that the result occupies multiple cells leads to #SPILL!. Always leave enough empty space or move the formula to an isolated area.
  3. Hard-coding Index Order – Users sometimes assume that [1,2] always means first column then second column, forgetting that reversing the order will silently shuffle the output. Document the array or use SEQUENCE to generate it automatically.
  4. Referencing Empty Ranges – If one argument points at an empty column, CHOOSE still outputs blanks, which can distort averages. Guard with IF(COUNTA(range)=0,\"\",range).
  5. Forgetting Absolute References – Dragging a CHOOSE formula without anchoring ranges (with the $ symbol) shifts the references and breaks alignment. Lock ranges before copying.

Alternative Methods

Although CHOOSE is often the quickest, there are other techniques:

MethodProsConsBest For
CHOOSE + array (current tutorial)No helper columns, fully dynamic, simple syntaxRequires dynamic array Excel, equal dimensions mandatoryDay-to-day combining of a few ranges
Power Query AppendHandles millions of rows, GUI driven, can save to data modelRefresh delay, breaks if file path changes, learning curveMonthly large-scale merges, ETL pipelines
INDEX-MATCH with helper columnWorks in older Excel versions prior to dynamic arraysMore verbose, calculation heavy, less transparentLegacy workbooks (pre-2019)
Copy-Paste into new sheetQuick for a one-off, no formula knowledge neededManual, error-prone, staticRare ad-hoc snapshots
VBA Array JoinCan incorporate logic loops, handles matrix transformationNeeds macro-enabled file, maintenance burdenAutomated corporate reporting with macros

Decision guidance:

  • Use CHOOSE when ranges are moderately sized and you want live updates.
  • Default to Power Query for recurring heavy data loads (over 500,000 rows).
  • Stick with INDEX-MATCH if your organisation is locked to Excel 2016 or older.

FAQ

When should I use this approach?

Use CHOOSE-based range combining whenever your analysis or reports need columns or blocks that are scattered across a worksheet yet share the same row or column count. Typical scenarios: creating lookup tables for XLOOKUP, building tidy data views for PivotTables, or preparing source arrays for dynamic charts.

Can this work across multiple sheets?

Absolutely. Reference each range with its sheet name, e.g., Sheet2!B2:B50. CHOOSE does not care where its arguments live; it only needs them to be the same size in the relevant dimension. Remember that if you rename a sheet, the formula updates automatically, but if you delete the sheet, you will get #REF!.

What are the limitations?

  • All ranges must be the same height (horizontal merges) or width (vertical merges).
  • Dynamic arrays are required; Excel 2019 perpetual and earlier will not spill.
  • Performance degrades with extremely large arrays (hundreds of thousands of cells).
  • CHOOSE itself cannot perform joins on keys—only concatenation of blocks.

How do I handle errors?

Wrap the entire CHOOSE in IFERROR if you anticipate occasional mismatches:

=IFERROR(
   CHOOSE({1,2}, Range1, Range2),
   "Check range sizes")

For cell-level errors inside ranges (e.g., division by zero), fix the source formulas or filter them out: =FILTER(CHOOSE(...), NOT(ISERROR(CHOOSE(...)))).

Does this work in older Excel versions?

Dynamic arrays are available in Microsoft 365, Excel 2021, and Excel for the web. Excel 2019 perpetual and earlier do not spill, so the CHOOSE technique will return only the first element. Alternatives: use INDEX-MATCH helper columns or migrate to Power Query.

What about performance with large datasets?

Up to roughly 100,000 cells, CHOOSE recalculates in milliseconds. Beyond that, use Excel Tables and structured references to minimise screen-updating cost, turn off automatic calculation during bulk edits, and consider loading the data into Power Pivot where joins are handled by the VertiPaq engine.

Conclusion

Combining ranges with CHOOSE is a deceptively simple yet incredibly powerful trick that frees you from the constraints of contiguous data. By mastering this technique, you can rapidly prototype dashboards, streamline recurring reports, and keep datasets tidy without duplication. The skill dovetails neatly with dynamic arrays, XLOOKUP, and Power Query, expanding your analytical toolkit. Next steps: experiment with stacking ranges vertically, integrate CHOOSE outputs into advanced FILTER formulas, and benchmark against Power Query to choose the right tool for each project. Start applying it today, and watch your spreadsheets become cleaner, faster, and easier to maintain.

We use tracking cookies to understand how you use the product and help us improve it. Please accept cookies to help us improve.