2014-04-28 1 views
2

데이터 테이블에서 피드 피벗 테이블을 기반으로 보고서를 만들었습니다. 세부 사항은 꽤 길고 (수만 행), 사용자는 데이터를 특정 필드로 요약하여 원하는 총계에만 드릴 다운 할 수 있습니다.피벗 항목을 효율적으로 숨기기

현재 루핑을 통해 성공했습니다. 지정된 필드에 대한 모든 피벗 테이블의 모든 피벗 항목을 숨 깁니다. 그러나 이는 상당한 시간 (15 분 이상)을 소비하여 실행됩니다. 다른 프로세스를 사용하여이를 최적화 할 수있는 방법이 있습니까, 아니면이 작업을 일괄 적으로 (설정 또는 옵션을 통해) 수행 할 수있는 옵션이 있습니까?

Sub groupByjrnl_id() 
    Dim ws As Worksheet 
    Dim pi As PivotItem 
    Dim pt As PivotTable 

    Excel.Application.ScreenUpdating = False 
    Excel.Application.Calculation = xlCalculationManual 

    For Each ws In Worksheets 
     If Left(ws.Name, 3) = "rap" Then 
      Excel.Application.StatusBar = "Groupement des jrnl_id " & ws.Name 
      For Each pt In ws.PivotTables 
       With pt.PivotFields("jrnl_id") 
        For Each pi In .PivotItems 
         pi.ShowDetail = False 
        Next pi 
       End With 
      Next pt 
     End If 
    Next ws 
    Excel.Application.StatusBar = "" 

    Excel.Application.ScreenUpdating = True 
    Excel.Application.Calculation = xlCalculationAutomatic 
End Sub 

내가 당신을 감사 엑셀 2007을 사용하고 있습니다 :

다음은이 작업을 수행하기 위해 호출되는 함수입니다!

답변

3

예 : 대신 pivotfield의 피벗 항목을 열거 당신은 단순히

.ShowDetail = False 
+0

감사로

For Each pi In .PivotItems pi.ShowDetail = False Next pi 

를 교체 pivotfield 자체 예컨대 :의 .ShowDetail 속성을 사용합니다. 나는 이미 그것을 발견하고 답을 게시하려하고있었습니다. 이것은 내가 사용했던 것과 정확히 일치하며 2 초 이내에 작동합니다. 좋아! – ApplePie

+0

죄송합니다. 게시물로 이동합니다;). 그것이 어느쪽으로 든 다행이라면 다행이다. –