Go Back

Here is Why Your Next Pivot Table Should Have a Dynamic Range

We usually use pivot tables to help analyze and simplify massive amount of data.  However, it gets tricky when we add or remove values in our source table, and the pivot table doesn’t automatically update.  A dynamic range solves this problem. This step by step tutorial will walk through how to use a dynamic range in Pivot Tables

Setting up the Data

Here we have a table of product orders from January to February.  

Figure 1.  Data for our pivot table

Pivot Table without a Dynamic Range

First let us create a pivot table without a dynamic range, and try adding some data.  Let us see what happens to the pivot table.

Step 1. Select the range of cells that we want to analyze through a pivot table. In this case, we select cells B2:D10.  

Step 2. Click the Insert tab, then Pivot Table. This will launch the Create PivotTable dialog box.

Figure 2. Inserting a Pivot Table

Step 3. In the Create PivotTable dialog box, tick Existing Worksheet.  Click the bar for Location and then click cell F2. This will position the pivot table in the existing worksheet, at cell F2.

Figure 3. Inserting a pivot table in an existing worksheet

Step 4. In the PivotTable Field List,  tick Product and Orders, then drag Month to the Column Labels.  This will show the Sum of Orders for each product per month.  

Figure 4. Selecting the fields for values to show in a pivot table

Adding more data

Step 5. Now let’s add data for March in cells B11:D14.

Figure 5. Adding more values into our source data

Step 6. Press Ctrl + Alt + F to refresh the pivot table.  We will see that nothing happens.  Adding more data to our source table does not automatically expand our PivotTable.

Figure 6. Pivot table not updated after adding more values


We can change the data source to expand the data range.

Click any value in the pivot table, then click Change Data Source under the Options tab.  

Click the button beside the Table/Range bar and select cells B2:D14 to expand the data selection.   

Figure 7. Changing the data source for our pivot table

Click Yes to the Excel prompt message shown below:

Figure 8. Excel prompt message

The pivot table will then be updated, showing the March data.  

Figure 9. Updated pivot table after changing the data source

Removing Data

What happens when we remove data from our table?  Let us try and delete the March data from B11:D14 and refresh by pressing Ctrl + Alt + F.  

Figure 10. Pivot table not updated after removing some values

The resulting pivot table does not shrink with the data.  Instead, the pivot table shows blank spaces taking the place of the deleted data.  

The complications arising from adding or removing data will be addressed by using a dynamic range in our pivot table.

Creating a Dynamic Range

We will use the same starting data as the previous example.

Figure 11. Data for pivot table with dynamic range

One method to create a dynamic range is through the OFFSET formula.  


=OFFSET(reference, rows, cols, [height], [width])


  • Reference: the reference cell for our dynamic range
  • Rows: the number of rows relative to the reference cell that we want to refer to
  • Cols: the number of columns relative to the reference cell that we want to refer to
  • [height]: the number of rows for our dynamic range
  • [width]: the number of columns for our dynamic range

Step 1. Click the Formulas tab, then select Name Manager.

Figure 12. Creating a dynamic range through Name Manager

Step 2. In the Name Manager dialog box, click New.

Figure 13. Creating a new range

Step 3. Let us name the range “Data”.  In the Refers to bar,enter the formula:


Figure 14. Entering the formula for dynamic range


  • Our reference cell is B2
  • The offset is 0 rows and 0 columns, which means that our reference is still cell B2
  • The number of rows is determined by the COUNTA function: COUNTA(Sheet1!$B:$B) which returns the number if non-empty rows in column B
  • The number of columns is determined by the COUNTA function: COUNTA(Sheet1!$2:$2) which returns the number if non-empty columns in row 2

Pivot Table Having a Dynamic Range

Now that we have created a dynamic range, let’s see how it improves our pivot table.

Step 1.  Click the Insert tab and select PivotTable.

Step 2. In the Table/Range: bar, enter the name of our dynamic range “Data”.  

Step 3.  Tick Existing Worksheet

Step 4. Click the bar for Location bar, then click cell F3.  

Figure 15. Inserting a pivot table with dynamic range


We do not want to position our pivot table in row 2 to avoid complicating our dynamic range. Note that in our dynamic range formula, we set the number of columns by counting the non-empty cells in row 2.

Step 5.  Create our pivot table by clicking Product and Orders, then dragging Month into the column labels.

Figure 16. Creating our pivot table

Step 6. Now we add more rows into our source table.  Add the March data as shown below. Then press  Ctrl + Alt + F to refresh the  pivot table.

Figure 17. Pivot table automatically expands with more data

The pivot table expands with the data.

Step 7. Now let’s try and remove some values in our source table.

Delete the column “Month” then  press Ctrl + Alt + F to refresh.  

The pivot table automatically shrinks with our data, showing only the Sum of Orders.  .

Figure 18. Pivot table automatically shrinks with less data

With a dynamic range, working with pivot tables becomes easier and more manageable.  We can shrink and expand our pivot table effortlessly with any changes in our data.

Most of the time, the problem you will need to solve will be more complex than a simple application of a formula or function. If you want to save hours of research and frustration, try our live Excelchat service! Our Excel Experts are available 24/7 to answer any Excel question you may have. We guarantee a connection within 30 seconds and a customized solution within 20 minutes.

Did this post not answer your question? Get a solution from connecting with the expert.

Another blog reader asked this question today on Excelchat:
Here are some problems that our users have asked and received explanations on

pivot from anpther pivot table (alt+d+p), but the source pivot must be dynamic range
Solved by S. D. in 11 mins
I am trying to create a VBA macro that creates a pivot table (dynamic) for a set of data. The data size will change with each database I bring up so the pivot table range needs to be dynamic.
Solved by X. W. in 29 mins
I have created a dynamic data range using a formula and now am trying to figure out how to use it as my data for a pivot table
Solved by F. Y. in 25 mins

Leave a Comment