
피벗 테이블(Excel 2010)이 있습니다. 데이터를 업데이트하고 새로 고칠 때마다 피벗 테이블의 정렬 및 필터가 각각 손실됩니다. 필터를 명시적으로 수정해야 합니다(모두 선택하고 필요하지 않은 항목은 제거).
이에 대한 해결책이 있습니까?
- 피벗 테이블이 새로 고쳐질 때 VBA를 통해 필터를 어떻게 변경할 수 있습니까?
- 피벗 테이블이 새로 고쳐질 때 VBA를 통해 정렬을 어떻게 변경할 수 있습니까?
- 데이터가 변경될 때 피벗 테이블 새로 고침을 어떻게 트리거할 수 있나요?
마크님, 미리 감사드립니다.
답변1
나는 내가 원하는 것을 성취할 수 있었다. 어떤 개체에 어떻게 액세스해야 하는지 세부 정보를 확인하기 위해 먼저 매크로를 기록했습니다. 그 후 몇 가지 최적화 작업을 수행하여 작업을 마쳤습니다. 아래 코드 추출을 참조하세요. 다른 사람들에게도 도움이 될 수 있습니다.
순서와 관련하여 포럼에서 원본 데이터 테이블에 다른 열 "정렬 순서"를 지정하고 이를 피벗 테이블의 숨겨진 열로 사용하여 해당 필드를 사용하여 정렬 순서를 정의해야 한다는 팁을 찾았습니다. 나중에 데이터를 변경할 때 이 정보도 손실되지 않습니다.
Sub Macro1()
On Error GoTo Fehler
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets("Rating").PivotTables(1)
.PivotFields("OWASP 2010").ClearAllFilters
With .PivotFields("OWASP 2010")
If .PivotItems("(blank)").Visible = True Then
.PivotItems("(blank)").Visible = False
End If
' uncomment this sectin in case you liek to change the sorting via vba
' 1. sort first the stuff automatically A-Z
'.AutoSort xlAscending, "OWASP 2010"
' 2. move empty values to the end
'If .PivotItems(" ").Position <> .PivotItems.Count - 1 Then
' .PivotItems(" ").Position = .PivotItems.Count - 1
'End If
End With
.PivotFields("Categories").ClearAllFilters
With .PivotFields("Fortify Categories")
If .PivotItems("0").Visible = True Then
.PivotItems("0").Visible = False
End If
If .PivotItems("(blank)").Visible = True Then
.PivotItems("(blank)").Visible = False
End If
End With
End With
Application.ScreenUpdating = True
Exit Sub
Fehler:
Application.ScreenUpdating = True
End Sub
마크에게 안부 인사