Please note javascript is required for full website functionality.

Blog

Power Query: Handling Dynamic Arrays

8 March 2023

Welcome to our Power Query blog.  This week, I extract data from a Dynamic Array.

 

I have a list of trainee salespeople that I need to extract to Power Query, so that I can merge their details with another query:

Seems simple enough; I select the data and use ‘From Table/Range’ on the ‘Get & Transform’ section of the data tab:

I don’t have any headers, so I take the defaults.

The results are not good.  If I click on the Error value, I see this:

If I discard the query and go back to the sheet, I can see what has happened:

To get a #SPILL! error, I must be dealing with a Dynamic Array.  I use CTRL+ Z to undo the Table creation. 

The list has been created using FILTER() which means that the output is a Dynamic Array.  Obviously in this example, I can just use the original table, but let’s assume that I don’t have access to that.

I used ‘From Table/Range’ to extract the data, and so Power Query converted the data to a Table, which doesn’t currently work with Dynamic Arrays.  I could however create a range. 

In the ‘Name Manager’ on the Formulas tab, I can create a new range.  If I just select the cells currently populated, this will be incorrect when I have more trainees.  I need to create a dynamic range.  This is the range I create:

The Excel formula is:

=Sheet1!$F$2#

This links to the data in the Dynamic Array created by the formula in cell $F$2.  Now, I can create a blank query to access this range:

I create the Source step:

The M code is:

= Excel.CurrentWorkbook(){[Name="DR_Trainees"]}[Content]

This extracts the content from the range DR_Trainees in the current workbook.

Power Query generates a ‘Changed Type’ step, which I keep.   

I don’t rename the columns yet, as I want to check that this query will refresh as expected.  I use ‘Close & Load’ from the Home tab and create the output on a new sheet:

Now I can add some new trainees to the original table:

The Dynamic Array updates immediately.  I refresh theTrainee_list query:                     

The new trainees appear, and my list is complete.  I can use Power Query to extract data from a Dynamic Array. 

 

Come back next time for more ways to use Power Query!

Newsletter