2014-07-11 1 views
0

데이터 필드에서 약 178 개의 필드가있는 피벗이 있습니다. 모두 xlsum 함수를 사용하기를 바랍니다. 이 작업을 수동으로 수행하려면 많은 시간이 필요하므로 VBA에서이 작업을 수행 할 방법을 찾았습니다. 먼저 매크로 레코더를 사용하여 2 ~ 3 개의 필드를 변경하여 코드의 모양을 확인했습니다.VBA에서 xlsum으로 피벗 데이터 필드를 변경하는 방법

그런 다음 모든 사용 된 데이터 필드에 대해 동일한 작업을 수행 할 수있는 코드를 작성하려고했습니다.

그러나 나는 이것에 성공하지 못했습니다. 나는 비슷한 질문을 찾기 위해 구글을 사용했고 거기에서 코드를 사용하려고 시도했다. 나는 아직도 성공하지 못했습니다.

누군가가이 기능을 사용하도록 도와주세요. 하드 이름이 지정된 데이터 필드를 직접 참조하는 코드를 발견했습니다. 그러나 그것은 내가 필요한 것이 아닙니다.

내가 지금 가지고 있습니다 :

Sub PivotTableSummaryFunctions1b() 

Dim PvtTbl As PivotTable 
Set PvtTbl = Worksheets("Blad4").PivotTables("Draaitabel") 

For Each PvtTbl.DataPivotField In PvtTbl.DataFields 
.Function = xlsum 

Next 

End With 

End Sub 

나는 코드 일이 무엇을 변경해야합니까? 지금 나를 위해 완벽하게 잘 작동 내가 지금이 코드를 사용했다

답변

0

:

Sub AddAllFieldsValues() 
Dim pt As PivotTable 
Dim pf As PivotField 
Dim iCol As Long 
Dim iColEnd As Long 

Set pt = Worksheets("pivot_long_term").PivotTables("Draaitabel1") 

With pt 
.ManualUpdate = True 
    .DataPivotField.Orientation = xlHidden 
    iCol = 5 
    iColEnd = .PivotFields.Count 

    For iCol = 5 To 32 
     With .PivotFields(iCol) 
      If .Orientation = 0 Then 
       .Orientation = xlDataField 
      End If 
     End With 
    Next iCol 

.ManualUpdate = False 
Worksheets("pivot_long_term").PivotTables("Draaitabel1").PivotCache.refresh 

.ManualUpdate = True 

For Each pf In .DataFields 
With pf 
.Function = xlSum 
.Caption = "." & .SourceName 
.NumberFormat = "#,##0" 
End With 
Next pf 
.ManualUpdate = False 
End With 

pt.PivotCache.refresh 

End Sub 
Sub AsSum() 
Dim pf As PivotField 
With Worksheets("pivot_long_term").PivotTables("Draaitabel1") 
.ManualUpdate = True 
For Each pf In .DataFields 
With pf 
.Function = xlSum 
.NumberFormat = "#,##0" 
End With 
Next pf 
.ManualUpdate = False 
End With 

Worksheets("pivot_long_term").PivotTables("Draaitabel1").PivotCache.refresh 


End Sub 
Sub Printshee 

외 1 옵션 (I 다른 형식에 사용하는 코드를하지만 거의 같다) :

Sub AsSum() 
Dim pf As PivotField 
With Worksheets("Blad4").PivotTables("Draaitabel1") 
.ManualUpdate = True 
For Each pf In .DataFields 
With pf 
.Function = xlsum 
.Caption = "." & .SourceName 
.NumberFormat = "#,##0" 
End With 
Next pf 
.ManualUpdate = False 
End With 

Worksheets("Blad4").PivotTables("Draaitabel1").PivotCache.Refresh 

End Sub 
Sub AddAllFieldsValues() 
Dim pt As PivotTable 
Dim iCol As Long 
Dim iColEnd As Long 

Set pt = Worksheets("blad4").PivotTables("Draaitabel1") 

With pt 
.ManualUpdate = True 
    .DataPivotField.Orientation = xlHidden 
    iCol = 4 
    iColEnd = .PivotFields.Count 

    For iCol = 4 To iColEnd 
     With .PivotFields(iCol) 
      If .Orientation = 0 Then 
       .Orientation = xlDataField 
      End If 
     End With 
    Next iCol 
.ManualUpdate = False 
Worksheets("blad4").PivotTables("Draaitabel1").PivotCache.Refresh 
End With 

End Sub 
관련 문제