CHOOSECOLS Function (LibreOffice Calc)

Lookup & Reference Intermediate LibreOffice Calc LibreOffice 25.8

The CHOOSECOLS function returns specific columns from an array or range. It is used for dynamic column extraction, array reshaping, and building flexible lookup and filtering workflows.

Version compatibility: CHOOSECOLS became available in LibreOffice Calc 25.8. It is not available in Calc 25.2 or older releases. See the official LibreOffice 25.8 release notes and function reference.

The **CHOOSECOLS** function extracts specific columns from a range or array. It is ideal for dynamic array reshaping, selective data extraction, and building flexible lookup or filtering pipelines.

What the CHOOSECOLS Function Does

  • Returns selected columns from a range or array
  • Supports multiple column indexes
  • Works with dynamic arrays
  • Useful for filtering, reshaping, and lookup preparation
  • A modern alternative to INDEX‑based column extraction

Syntax

CHOOSECOLS(array; col1; col2; col3; ...)

Arguments

  • array:
    The source range or array.

  • col1, col2, …:
    One or more column numbers to extract (1‑based).

Basic Examples

Extract a single column

=CHOOSECOLS(A1:D10; 2)
→ returns column B

Extract multiple columns

=CHOOSECOLS(A1:D10; 1; 4)
→ returns columns A and D

Using cell references

=CHOOSECOLS(A1:D10; A12)

Advanced Examples

Reorder columns

=CHOOSECOLS(A1:D10; 4; 1; 2)
→ D, A, B

Combine with FILTER

=CHOOSECOLS(FILTER(A1:D100; A1:A100>0); 1; 3)

Combine with SORTBY

=SORTBY(CHOOSECOLS(A1:D100; 1; 4); 2; -1)

Dynamic selection using MATCH

=CHOOSECOLS(A1:D10; MATCH("Price"; A1:D1; 0))

Extract every second column

=CHOOSECOLS(A1:H10; {1;3;5;7})

Use with XLOOKUP to return multiple columns

=XLOOKUP(E1; A1:A100; CHOOSECOLS(A1:D100; 2; 4))

Edge Cases and Behavior Details

CHOOSECOLS is 1‑based

  • Column 1 = first column
  • Column 0 → Err:502
  • Negative indexes → Err:502

Accepts:

  • Ranges
  • Dynamic arrays
  • Array literals

Behavior details

  • Returns a dynamic array
  • Column order is preserved based on the argument order
  • Duplicate column indexes are allowed
  • Out‑of‑range indexes → Err:502

CHOOSECOLS of an error → error propagates

Common Errors and Fixes

Err:502 — Invalid argument

Cause:

  • Column index < 1
  • Column index > number of columns
  • Non-numeric index

Fix:

  • Validate column numbers
  • Use MATCH to generate safe indexes

#VALUE! or #REF! in downstream formulas

Cause:

  • Array size mismatch

Fix:

  • Wrap with IFERROR or validate array dimensions

Best Practices

  • Use CHOOSECOLS for clean, readable column extraction
  • Use INDEX for row‑based extraction
  • Combine with FILTER, SORT, and SORTBY for dynamic pipelines
  • Use MATCH to generate column indexes programmatically
  • Use CHOOSEROWS for row extraction
CHOOSECOLS is perfect for reshaping data — especially when building dynamic dashboards, lookup tables, or filtered views.
  • CHOOSEROWS — extract rows
  • CHOOSE — select from a list
  • INDEX — flexible row/column extraction
  • FILTER — row filtering
  • SORT / SORTBY — ordering arrays
  • XLOOKUP — modern lookup with array returns

By mastering CHOOSECOLS, you can build powerful, dynamic data‑manipulation workflows in LibreOffice Calc.