0
我被要求爲PivotTable
製作宏代碼。我已經完成了它,但是有一些錯誤我不知道在調用該函數AgingFur
後無法執行。樞軸也沒有按我的預期顯示。數據透視表沒有按預期的那樣出現
下面是我得到的數據透視表(Pivot Table A
):
同時這是一個我應該得到(Pivot Table B
),其中手動生成:
這裏是我用來製作的代碼Pivot Table A
:
Sub AgingFur()
Sheets("B_Original COpy").Activate
Dim objTable As PivotTable, objField As PivotField, ws As Worksheet
ActiveWorkbook.Sheets("B_Original COpy").Range("A1").Select
Set ws = Sheets.Add
ws.Name = "X_Aging ST Inc"
Set objTable = Sheets("B_Original COpy").PivotTableWizard(TableDestination:=ws.Cells(1, "A"))
objTable.PivotCache.MissingItemsLimit = xlmissingItemNone
objTable.PivotCache.Refresh
Set objField = objTable.PivotFields("Status")
objField.Orientation = xlPageField
objField.Position = 1
objField.PivotItems("Cancelled").Visible = False
Set objField = objTable.PivotFields("Month Opened")
objField.Orientation = xlRowField
Set objField = objTable.PivotFields("Age")
objField.Orientation = xlDataField
objField.Function = xlAverage
objField.NumberFormat = "* #,##0.00"
Set objField = objTable.PivotFields("Age FL")
objField.Orientation = xlDataField
objField.Function = xlAverage
objField.NumberFormat = "* #,##0.00"
With objTable.DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
End Sub
我需要出現樞軸爲Pivot Table B
並需要解決我不知道它在哪裏的錯誤。請忽略顯示的值。
我該如何解決這個問題?
代碼函數AgingFur
之前是
Call KPIDashboardSheet '<~ This one is Pivot
Call KPISecond '<~ This one is Pivot
Call FactorizeData '<~ This one is Pivot
Call AgingFur '<~ The problem Pivot
Call SortWorksheets '<~ This one for sort all sheets based on name
這是 'FactorizeData' 代碼:
Private Sub FactorizeData()
Sheets("FactorizeData List").Activate
ActiveSheet.Range("A:AM").Copy
Sheets.Add.Name = "FactorizeData"
Sheets("FactorizeData List").Activate
Range("A:AM").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Call FactorizeDataTables
End Sub
Private Sub FactorizeDataTables()
Sheets("FactorizeData List").Activate
Dim objTable As PivotTable, objField As PivotField, ws As Worksheet
ActiveWorkbook.Sheets("FactorizeData List").Range("A1").Select
Set ws = Sheets.Add
ws.Name = "FactorizeData Table"
Set objTable = Sheets("FactorizeData List").PivotTableWizard(TableDestination:=ws.Cells(3, "A"))
objTable.PivotCache.MissingItemsLimit = xlmissingItemNone
objTable.PivotCache.Refresh
Set objField = objTable.PivotFields("Priority")
objField.Orientation = xlColumnField
Set objField = objTable.PivotFields("Status")
objField.Orientation = xlColumnField
Set objField = objTable.PivotFields("Type")
objField.Orientation = xlColumnField
Set objField = objTable.PivotFields("Date")
objField.Orientation = xlRowField
Set objField = objTable.PivotFields("Type")
objField.Orientation = xlDataField
Dim pf As PivotField
Set pf = ActiveSheet.PivotTables(1).PivotFields("Date")
pf.DataRange.Cells(1).Group Start:=True, End:=True, Periods:=Array(False, False, _
False, False, True, False, True)
End Sub
這是SortWorksheet:
Private Sub SortWorksheets()
Dim N As Integer
Dim M As Integer
Dim FirstWSToSort As Integer
Dim LastWSToSort As Integer
Dim SortDescending As Boolean
SortDescending = False
If ActiveWindow.SelectedSheets.Count = 1 Then
FirstWSToSort = 1
LastWSToSort = Worksheets.Count
Else
With ActiveWindow.SelectedSheets
For N = 2 To .Count
If .Item(N - 1).Index <> .Item(N).Index - 1 Then
Exit Sub
End If
Next N
FirstWSToSort = .Item(1).Index
LastWSToSort = .Item(.Count).Index
End With
End If
For M = FirstWSToSort To LastWSToSort
For N = M To LastWSToSort
If SortDescending = True Then
If UCase(Worksheets(N).Name) > UCase(Worksheets(M).Name) Then
Worksheets(N).Move Before:=Worksheets(M)
End If
Else
If UCase(Worksheets(N).Name) < UCase(Worksheets(M).Name) Then
Worksheets(N).Move Before:=Worksheets(M)
End If
End If
Next N
Next M
End Sub
如果我們忽略的數字你有什麼問題之前,這是經典的風格? – pnuts
顯示的值是因爲它們來自不同的數據源。你是什麼意思'經典'風格? @pnuts – IlhamideaZ
我的意思是[this](http://superuser.com/questions/486539/excel-2007-the-empty-look-of-a-pivot-table/486540#486540),但我看到我的Excel 2013的選項對外觀沒有什麼影響:) – pnuts