2013-10-25 108 views
0

我想用vba從數據表中創建一個數據透視表,標題爲DATA。組織在許多列中,其中三個被接受地稱爲NOM,NOM_MOVE和COMMENT。VBA和數據透視表:獲取兩個數據字段

我想數據透視表有以下字段:山口標籤字段= SUM(值),行標籤字段=評論,值域= NOM的總和的NOM_MOVE

不過總而言之,我的代碼。寫不直到在那裏我有麻煩分配權領域工作或給予正確的字段(即使在使用pivottablewizard和緩存/ createpivottable不同形式

我的代碼了是:

Sub CreatePivot() 
' Create the 5 summary pivot tables using the TRADE_LIST sheet as data 
Dim pivot1 As Worksheet 
Dim datasheet As Worksheet 
Dim dataCache As PivotCache 
Dim PVT As PivotTable 
Dim LastRow As Long 
Dim LastCol As Long 
Dim dataSource As Range 
Dim PVTdest As Range 

Set datasheet = Sheets("DATA") 
Set pivot1 = Sheets("PIVOT") 

' (1) Source data from the TRADE_LIST sheet and create a pivot cache from source data      to use for each pivot table 

LastRow = datasheet.Cells(1, 1).End(xlDown).Row 
LastCol = datasheet.Cells(1, 1).End(xlToRight).Column 
Set dataSource = datasheet.Cells(1, 1).Resize(LastRow, LastCol) 

Set dataCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=dataSource) 

' (2) Create a pivot table 
Set PVTdest = pivot1.Cells(2, 2) 
Set PVT = dataCache.CreatePivotTable(tabledestination:=PVTdest,    tablename:="Comment_Sums") 

.. 。

任何幫助非常讚賞

回答

0

我做了一些修改,以你的代碼,以便試試這個:

Sub CreatePivot() 
' Create the 5 summary pivot tables using the TRADE_LIST sheet as data 
Dim LastRow, LastCol As Long 
Dim dataSource, destination As String 
Dim wb As Workbook 
Dim data_sheet, pivot1 As Worksheet 

Set wb = ThisWorkbook 
Set data_sheet = wb.Sheets("DATA") 'in your code, you forgot to include WB 
Set pivot1 = wb.Sheets("PIVOT") 

' (1) Source data from the TRADE_LIST sheet and create a pivot cache from source data _ 
    to use for each pivot table 

'i changed this part to cover all data 
LastRow = data_sheet.Cells(data_sheet.Rows.Count, 1).End(xlUp).Row 
LastCol = data_sheet.Cells(1, data_sheet.Columns.Count).End(xlToLeft).Column 

'PivotCache creation requires arguments in string format, no need to use Set 
dataSource = data_sheet.Name & "!" & data_sheet.Cells(1, 1).Resize(LastRow, LastCol).Address(ReferenceStyle:=xlR1C1) 
destination = pivot1.Name & "!" & pivot1.Range("A1").Address(ReferenceStyle:=xlR1C1) 

'here we use the datasource and destination 
wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    dataSource, Version:=xlPivotTableVersion12).CreatePivotTable _ 
    TableDestination:=destination, TableName:="PivotTable1", DefaultVersion _ 
    :=xlPivotTableVersion12 

'after creating pivot, add the Row Field 
With pivot1.PivotTables("PivotTable1").PivotFields("Comment") 
    .Orientation = xlRowField 
    .Position = 1 
End With 

'then add the column fields 
With pivot1 
    .PivotTables("PivotTable1").AddDataField .PivotTables(_ 
     "PivotTable1").PivotFields("NOM"), "Sum of NOM", xlSum 
    .PivotTables("PivotTable1").AddDataField .PivotTables(_ 
     "PivotTable1").PivotFields("NOM_MOVE"), "Sum of NOM_MOVE", xlSum 
End With 

End Sub 

希望這得是你開始。