Question: In Microsoft Excel 2003/XP/2000/97, I'm looking for a macro that would automatically refresh a pivot table whenever data is changed in an Excel worksheet. Is this possible?
Answer: There are several "events" available within an Excel spreadsheet where you can place VBA code. In your case, we want to refresh the pivot table when the "Worksheet_Calculate" event fires.
Let's look at an example.
Download Excel spreadsheet (as demonstrated below)
In our spreadsheet, there are two sheets - one is called Data which contains the source data for the pivot table. Another sheet is called Pivot which contains the pivot table.
On the sheet called Data, we've placed code on the "Worksheet_Calculate" event, so that whenever the data changes on the "Data" sheet, the pivot table will be refreshed.
You can press Alt-F11 to view the VBA code.
Note: This only will work, if you have the spreadsheet set to calculate "automatically". This is the default for most Excel spreadsheets, but some people turn this feature off.
The macro code looks like this:
Private Sub Worksheet_Calculate() 'If data on this worksheet changes, refresh the pivot table Sheets("Pivot").PivotTables("PivotTable1").RefreshTable End Sub