您可能想要使用內置的Excel功能來執行此操作。循環可能需要很長時間,並且如果您有很多值需要循環,則會出現問題。
像下面這樣可能讓你開始(從http://www.ozgrid.com/News/pivot-tables.htm)
Sub MakeTable()
Dim Pt As PivotTable
Dim strField As String
'Pass heading to a String variable
strField = Selection.Cells(1, 1).Text
'Name the list range
Range(Selection, Selection.End(xlDown)).Name = "Items"
'Create the Pivot Table based off our named list range.
'TableDestination:="" will force it onto a new sheet
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:="=Items").CreatePivotTable TableDestination:="", _
TableName:="ItemList"
'Set a Pivot Table variable to our new Pivot Table
Set Pt = ActiveSheet.PivotTables("ItemList")
'Place the Pivot Table to Start from A3 on the new sheet
ActiveSheet.PivotTableWizard TableDestination:=Cells(3, 1)
'Move the list heading to the Row Field
Pt.AddFields RowFields:=strField
'Move the list heading to the Data Field
Pt.PivotFields(strField).Orientation = xlDataField
End Sub
這是小計創建一個數據透視表(雖然我更喜歡數據透視表) http://msdn.microsoft.com/en-us/library/aa213577(office.11).aspx
編輯: 我重讀並有以下想法。在單獨的工作表上設置數據透視表(不使用任何代碼),然後將下面的代碼放在具有數據透視表的工作表上,這樣每次選擇工作表時都會更新表格。
Private Sub Worksheet_Activate()
Dim pt As PivotTable
'change "MiPivot" to the name of your pivot table
Set pt = ActiveSheet.PivotTables("MyPivot")
pt.RefreshTable
End Sub
編輯#2 刷新片上 http://www.ozgrid.com/VBA/pivot-table-refresh.htm
Private Sub Worksheet_Activate()
Dim pt As PivotTable
For Each pt In ActiveSheet.PivotTables
pt.RefreshTable
Next pt
End Sub
的鏈接對如何刷新在片材/工作簿樞軸表的多個選項所有樞軸表。
我同意,數據透視表是你之後 – 2009-10-21 21:27:24
我如何找到數據透視表/圖表的名稱? – 2009-10-21 21:39:25
右鍵點擊數據透視表並選擇數據透視表選項。這將顯示當前的名稱,並允許您更改名稱,如果你想。 – guitarthrower 2009-10-21 22:07:38