How to Use the CHOOSE Function in Google Sheets to Dynamically Select Values and Formulas

When modeling scenarios, building financial forecasts, or switching between calculation metrics in Google Sheets, users frequently rely on long, nested IF statements or lookup tables. However, deeply nested IF(test, val, IF(test2, val2, ...)) formulas are difficult to audit, slow to evaluate, and prone to syntax errors. Google Sheets provides the CHOOSE function as an elegant alternative. CHOOSE evaluates an integer index number and immediately returns the corresponding value, range reference, or formula execution from an ordered list of choices.

Understanding the Syntax of CHOOSE

The syntax for the CHOOSE function is clean and modular:

=CHOOSE(index, choice1, [choice2, ...])

Argument definitions:

  • index: A positive whole number from 1 to 30 (or a cell reference containing an integer) determining which item from the list to return.
  • choice1, choice2, …: Between 1 and 30 items. Choices can be hardcoded text strings, numbers, cell references, range coordinates, or nested formula expressions.

Basic Value Selection Based on an Index

The simplest application of CHOOSE translates a numerical code into a human-readable descriptor. For example, to convert a quarterly number (1 through 4) in cell A2 into a business quarter label:

=CHOOSE(A2, "Q1 - Winter", "Q2 - Spring", "Q3 - Summer", "Q4 - Autumn")

If A2 contains 3, the function returns "Q3 - Summer". If the index is less than 1 or exceeds the count of provided choices, the formula returns a #VALUE! error.

Dynamic Metric Switching in Financial Models

A classic financial modeling technique involves giving users a dropdown selector to choose between Base Case (1), Best Case (2), and Worst Case (3) revenue projections.

Suppose your project assumption growth rates are stored in cells B2 (3%), B3 (7%), and B4 (-2%), and the scenario selector is in cell E1:

=CHOOSE(E1, B2, B3, B4)

Any calculation downstream referencing this formula updates dynamically when the user toggles the scenario index in E1.

Dynamic Formula Aggregation (Switching SUM, AVERAGE, and MAX)

Because CHOOSE can return complete nested formula results, you can build dynamic aggregation summary cards controlled by a dropdown cell.

If cell D1 contains an aggregation selector number (1 for Sum, 2 for Average, 3 for Maximum, and 4 for Minimum), calculate the summary of sales in B2:B50 using:

=CHOOSE(D1, SUM(B2:B50), AVERAGE(B2:B50), MAX(B2:B50), MIN(B2:B50))

This replaces four separate formula cards with a single interactive cell.

Reversing Column Lookups with CHOOSE and VLOOKUP

A classic limitation of traditional VLOOKUP is that it cannot look to the left—it requires the lookup key to be in the first column of the search range. By combining VLOOKUP with an array-literal CHOOSE({1,2}, ...), you can rearrange column positions dynamically in memory:

=VLOOKUP(F2, CHOOSE({1,2}, B2:B100, A2:A100), 2, FALSE)

In this formula:

  1. CHOOSE({1,2}, B2:B100, A2:A100) constructs a virtual 2-column array where Column B is treated as Column 1 and Column A is treated as Column 2.
  2. VLOOKUP searches for F2 in Column B and successfully extracts the corresponding item from Column A to the left.

Combining CHOOSE with RANDBETWEEN for Random Sampling

To assign randomised categories or test samples across a spreadsheet column without writing Google Apps Script, pair CHOOSE with RANDBETWEEN:

=CHOOSE(RANDBETWEEN(1, 3), "Priority High", "Priority Medium", "Priority Low")

Every recalculation assigns one of the three priority tiers with equal probability.

CHOOSE vs SWITCH vs Nested IF

Comparison Factor CHOOSE SWITCH Nested IF
Index/Condition Type Strictly 1-based sequential integers Any value, string, or expression match Independent boolean logic tests
Formula Complexity Lowest; minimal argument overhead Medium; pairs targets and results Highest; deeply nested parenthesis
Speed & Performance Extremely fast native indexing Fast linear evaluation Slowest across large ranges
Default Fallback Value No (returns #VALUE!) Yes (optional trailing argument) Yes (final false branch)

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.