close

這幾天上網找到的,但有些點我還沒有想通,過陣子有空再來想吧~~


趕工趕工,加油啦~~~


_____________________________________________________________________


source


'Purpose: 用VBA產生一個樞紐分析表


'Module: 一般模組-Module1
'Reference: Excel VBA徹底研究-Excel 2003 Power Programming with VBA
'Goals: 1. 在Workbook上新增PivotCache
' 2. 在PivotCache上建立PivotTable
' 3. 安排頁, 欄, 列
' 4. 隱藏欄位項目
Option Explicit

Sub CreatePivotTable()
Dim PTCache As PivotCache
Dim PT As PivotTable
'物件架構
'Workbook - PivotCaches
'Worksheet - PivotTables
' PivotTable - PivotFields
' PivotField - PivotItems
'在本工作簿新增一個PivotCache物件
'xlDatabase常數: 表示使用Microsoft Excel 清單或資料庫
'資料表最好上下左右個留一空格, 這樣可以很方便的使用CurrentRegion屬性定位整個資料表
'這樣的方法有個最大的好處就是資料增減都不用更改程式碼.
Set PTCache = ThisWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, _
SourceData:=Sheets("theSource").Range("b2").CurrentRegion.Address)
'在新增的PivotCache創建PivotTable
'TableDestination指定為空字串表示在新工作表顯示樞紐分析表
'你可以指定工作簿中某個儲存格為樞紐分析表的起始位置
Set PT = PTCache.CreatePivotTable _
(TableDestination:="", _
TableName:="PivotTable1")
'在新的PivotTable上設置欄位
With PT
'將 [類別] 作為分頁
.PivotFields("類別").Orientation = xlPageField
'將 [費用類別] 作為欄
.PivotFields("費用類別").Orientation = xlColumnField
'將 [月] [日] 作為列
'先月後日將產生月小計, 弄反了就產生日小計
'也可不要 [日] , 只做月統計
.PivotFields("月").Orientation = xlRowField
'.PivotFields("日").Orientation = xlRowField
'將 [支出金額] 作為資料
.PivotFields("支出金額").Orientation = xlDataField
'可以設定各欄位的顯示與否
With .PivotFields("費用類別")
.PivotItems("日用品").Visible = False
.PivotItems("水電費").Visible = False
.PivotItems("交通費").Visible = False
End With
End With
'建立樞紐分析表會顯示出其命令列, 關掉它
Application.CommandBars("PivotTable").Visible = False
'Excel 2003者請打開下面的敘述
'ThisWorkbook.ShowPivotTableFieldList = False
End Sub
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Abby 的頭像
    Abby

    Abby的部落格

    Abby 發表在 痞客邦 留言(0) 人氣()