How to Get Excel Column Values Into a List in Power Automate Desktop

A project manager I worked with kept all active projects in an Excel workbook and wanted a desktop flow to loop through the project names, one by one, to create a folder for each. The rest of the workbook didn’t matter, only the Project Name column. That’s a common need in Power Automate Desktop: take one column out of a worksheet and turn it into a list you can loop through.

In this tutorial, I’ll show you two ways to do it. The first reads the sheet into a data table and pulls out the column. The second copies the cells to the clipboard and splits them into a list. I’ll also show you how to get only the first or the last few rows.

Quick answer: Read the worksheet with Read from Excel worksheet (with First line of range contains column names turned on), then use Retrieve data table column into list with the column name, such as Project Name. The result is a list variable called ColumnAsList. Use %ColumnAsList[0:10]% for the first 10 items or %ColumnAsList[ColumnAsList.Count - 5:]% for the last 5.

The example workbook

The workbook, Project Details 2026, is formatted as an Excel table with five columns: Project Name, Project Start Date, Project Budget, Project Code and Associated Company. Row 1 holds the headers, and the projects start in row 2.

Excel table of project details with project name, start date, budget, code and company columns

Save the workbook in a local folder while you build the flow. Excel actions in Power Automate Desktop don’t work reliably with files inside a OneDrive or SharePoint sync folder.

Method 1: Read the sheet and retrieve the column (recommended)

This method doesn’t touch the clipboard, so nothing else on the PC can interfere with it, and it handles any number of rows.

Start with Launch Excel, set to and open the following document, and choose the workbook in Document path. The action produces the ExcelInstance variable that the other Excel actions use.

Launch Excel action opening the Project Details 2026 workbook

Next, add Read from Excel worksheet. Set Retrieve to All available values from worksheet, expand Advanced, and turn on First line of range contains column names. The data goes into a data table variable, ExcelData, with the headers as column names.

Now add Retrieve data table column into list, which you’ll find under Variables > Data table. Set the data table to %ExcelData% and Column name or index to Project Name (or 0, the index of the first column). The action creates a list variable called ColumnAsList with every project name, in order.

Finish with Close Excel, set to Do not save document. When you run the flow, open ColumnAsList in the Flow variables pane to see the project names, starting at index 0.

Get only the first or last rows

Lists support slicing, so you don’t need a special action to take part of the column. The number after the colon isn’t included:

You wantExpression
The first 10 names%ColumnAsList[0:10]%
The last 5 names%ColumnAsList[ColumnAsList.Count - 5:]%
Everything except the first name%ColumnAsList[1:]%
The number of names%ColumnAsList.Count%

Put the expression in a Set variable action, or use it directly as the Value to iterate of a For each loop.

Method 2: Copy the cells and split them into a list

This is the method many older tutorials use, and it’s still handy when you want exactly the cells you’d select by hand. It works by copying the cells to the clipboard and splitting the copied text at each line break.

Step 1: Open the workbook

Add Launch Excel exactly as in Method 1.

Step 2: Select the cells

Add Select cells in Excel worksheet and set Select to Range of cells. The Project Name column is column 1, and the projects start in row 2, because row 1 holds the header. Excel actions count rows and columns from 1, not 0.

Select cells in Excel worksheet action selecting column 1 from row 2 to row 10

The screenshot selects rows 2 to 10, which is nine projects. For the first ten projects, set End row to 11.

Step 3: Copy the cells and read the clipboard

Add Copy cells from Excel worksheet with Copy mode set to Values from selection. Then add Get clipboard text, which stores what was copied in a variable called ClipboardText.

Copy cells from Excel worksheet action copying the values from the current selection
Get clipboard text action storing the copied cells in ClipboardText

Step 4: Split the text into a list

Add Split text. Set Text to split to %ClipboardText%, Delimiter type to Standard, and Standard delimiter to New line. I renamed the output variable to ProjectNamesList.

Split text action splitting the clipboard text by new line into ProjectNamesList

Then close the workbook with Close Excel, set to Do not save document:

Close Excel action closing the workbook without saving

If you want the list under a friendlier name, a Set variable action can copy it into a new variable, such as ProjectNames:

Set variable action copying ProjectNamesList into the ProjectNames variable

Run the flow and open the variable in the Flow variables pane. Each project name is a separate item in the list:

Flow variables pane showing the ProjectNames list with the first project names

Excel adds a line break after the last copied cell, so the list sometimes ends with an empty item. If yours does, remove it with Remove item from list, or check for empty values in your loop.

Get the last 5 values with the clipboard method

The same approach can take the last few rows, as long as the flow knows where the data ends. This time, the workbook has 10 projects, in rows 2 to 11:

Excel table with ten projects used to get the last five project names

After Launch Excel, add Get first free column/row from Excel worksheet. It returns FirstFreeRow, the first empty row, which is 12 here.

Get first free column/row from Excel worksheet action producing FirstFreeColumn and FirstFreeRow

The last five projects are in rows 7 to 11, so the start row is %FirstFreeRow - 5% and the end row is %FirstFreeRow - 1%. You don’t need to read the whole sheet or count rows for this. The original version of this flow read the sheet first and calculated the start row from %ColumnData.RowsCount%, which is shown below; it works, but the free-row formula is simpler and easier to check.

Read from Excel worksheet action reading the used range into ColumnData
Set variable action calculating a start row from the RowsCount of ColumnData

Add Select cells in Excel worksheet with Start row set to your start row and End row set to %FirstFreeRow - 1%, keeping column 1 for both the start and end column:

Select cells in Excel worksheet action using a start row variable and FirstFreeRow minus 1

Then copy, read the clipboard, split the text, and close Excel, exactly as before:

Copy cells from Excel worksheet action for the last five rows
Get clipboard text action for the last five project names
Split text action creating ProjectNamesList from the copied last five rows
Close Excel action at the end of the last five rows flow

The result is a list with the five most recent projects, starting with Remote Work Enablement:

ProjectNamesList variable showing the last five project names

Which method should you use?

For most flows, I use Method 1. It reads the data directly, doesn’t depend on the clipboard, and slicing makes it easy to take any part of the column. The clipboard method is worth keeping for quick, one-off flows, or when you need exactly the cells a person would select, but avoid it on machines where people are working at the same time, because anything they copy during the run ends up in your list.

One more tip: the Create new list action creates an empty list. It’s useful when you want to build a list yourself with Add item to list, but it won’t read values from Excel.

These tutorials cover more Excel and list actions in Power Automate Desktop:

Frequently Asked Questions

How do I get a column from Excel as a list in Power Automate Desktop?

Read the sheet with Read from Excel worksheet, with First line of range contains column names turned on, then use Retrieve data table column into list with the column name. The result is stored in ColumnAsList.

Do Excel actions start counting at 0 or 1?

Excel actions count rows and columns from 1, like Excel itself. Data tables and lists in Power Automate Desktop start at 0.

How do I get the last N rows of an Excel column?

Read the column into a list and use slicing, for example %ColumnAsList[ColumnAsList.Count – 5:]% for the last five items. With the clipboard method, select from row %FirstFreeRow – 5% to %FirstFreeRow – 1%.

Why does my list end with an empty item?

When you copy cells, Excel adds a line break after the last cell, so Split text can create an empty last item. Remove it with Remove item from list, or use the data table method instead.