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.
Compatibility
▾| Excel | ✔ |
| Gnumeric | ✖ |
| Google_sheets | ✖ |
| Libreoffice | ✔ |
| Numbers | ✖ |
| Onlyoffice | ✔ |
| Openoffice | ✖ |
| Wps | ✔ |
| Zoho | ✖ |
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.