CHOOSECOLS Function (LibreOffice Calc)
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.
Related Patterns and Alternatives
- 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.