How to Use the CHOOSECOLS Function to Reorder Array Columns in Excel

The Problem with Static Data Grids

In Microsoft Excel, when you import a massive dataset from a corporate database, the columns are often organized in an illogical order. For example, you might receive a master spreadsheet where Column A is the “Employee ID,” Column B is “Hire Date,” Column C is “Department,” and Column D is the “Last Name.”

If your boss asks you to generate a clean, simple report that only shows the “Last Name” next to the “Department,” the traditional approach requires manual labor. You have to physically highlight Column D, copy it, paste it into a new sheet, go back, copy Column C, and paste it next to it.

If the original database updates with new employees tomorrow, your manually copied-and-pasted report is instantly outdated. To fix this, you need a dynamic formula that automatically extracts and reorders specific columns from a master grid. You can achieve this using the CHOOSECOLS function.

Understanding the Syntax

The CHOOSECOLS function allows you to look at a massive 2D array of data, select only the specific columns you actually care about, and instantly spill them into a brand new, dynamically linked array in whatever order you prefer.

=CHOOSECOLS(array, col_num1, [col_num2], ...)

  • array: The master grid of data you want to pull from (e.g., A1:D100).
  • col_num: The numeric index of the column you want to extract. (Column A is 1, Column B is 2, Column C is 3, etc.).

Example 1: Extracting and Reordering Two Columns

Let’s solve the problem mentioned above. Your master data is located in A1:D100.

  • Column 1 (A) = Employee ID
  • Column 2 (B) = Hire Date
  • Column 3 (C) = Department
  • Column 4 (D) = Last Name

You want to create a brand new, two-column report on a separate worksheet. You want the Last Name to appear first (on the left), and the Department to appear second (on the right). You want to completely ignore the ID and Hire Date.

Click on the blank cell where you want your new report to begin (e.g., F1) and type:

=CHOOSECOLS(A1:D100, 4, 3)

How this works:

  1. Excel looks at the master grid (A1:D100).
  2. It extracts Column 4 (Last Name) and places it into the very first column of your new spilled array.
  3. It extracts Column 3 (Department) and places it immediately to the right of the names.
  4. The formula ignores Columns 1 and 2 entirely.

If the HR team adds a new employee to the bottom of the master grid, your dynamic CHOOSECOLS report will instantly update to include them, perfectly formatted.

Example 2: Extracting from the Right (Negative Numbers)

If you are dealing with a massive dataset containing 50 columns of financial data (Columns A through AX), and you only want to extract the very last column (the “Grand Total” in column AX), counting manually from 1 to 50 is tedious and prone to error.

The CHOOSECOLS function supports negative numbers, which tells Excel to count backward from the extreme right edge of the array.

=CHOOSECOLS(A1:AX100, 1, -1)

This formula extracts Column 1 (the left-most column, perhaps the Product Name), and perfectly pairs it with Column -1 (the right-most column, the Grand Total), ignoring the 48 columns in the middle.

Example 3: Stacking with Dynamic Arrays

Because CHOOSECOLS outputs a dynamic array, it can be nested seamlessly inside other array functions like SORT or UNIQUE.

If you want to extract the Last Name and Department columns, but you also want the final report to be automatically sorted alphabetically by the Last Name, you simply wrap the formula:

=SORT(CHOOSECOLS(A1:D100, 4, 3))

This single formula extracts the exact data you need, reorders the columns perfectly, alphabetizes the entire list, and updates instantly if the source data ever changes.

Get the best tech tips delivered straight to your inbox.

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