Vba를 사용하여 피벗 테이블을 필터링하는 방법(예제 포함)


VBA를 사용하여 Excel에서 피벗 테이블을 필터링하려면 다음 방법을 사용할 수 있습니다.

방법 1: 값을 기준으로 피벗 테이블 필터링

 SubFilterPivotTable ()
   Dim pf As PivotField
   Dim myFilter As String
   Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
   myFilter = ActiveWorkbook.Sheets(" Sheet1 ").Range(" J2 ").Value
   pf.PivotFilters.Add2 xlCaptionEquals, , myFilter
End Sub

이 특정 매크로는 PivotTable1 이라는 피벗 테이블을 필터링하여 피벗 테이블의 위치 열 값이 Sheet1J2 셀 값과 동일한 행만 표시합니다.

방법 2: 여러 값을 기준으로 피벗 테이블 필터링

 Sub FilterPivotTableMultiple()
  Dim v Ace Variant
  Dim i As Integer, j As Integer
  Dim pf As PivotField
  Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
  
  'specify range with values to filter on
  v = Range(" J2:J3 ")
  
  'clear existing filters
  pf.ClearAllFilters
  
  'apply filter to pivot table
  With pf
    For i = 1 TB pf.PivotItems.Count
      j = 1
      Do While j <= UBound(v, 1) - LBound(v, 1) + 1
         If pf.PivotItems(i).Name = v(j, 1) Then
           pf.PivotItems(pf.PivotItems(i).Name).Visible = True
           Exit Do
        Else
          pf.PivotItems(pf.PivotItems(i).Name).Visible = False
       End If
        j = j + 1
      Loop
    Next i
 End With
End Sub

이 특정 매크로는 PivotTable1 이라는 피벗 테이블을 필터링하여 피벗 테이블의 위치 열 값이 J2:J3 셀 범위의 값 중 하나와 동일한 행만 표시합니다.

방법 3: 피벗 테이블 필터 제거

 SubClearPivotTableFilter ()
   Dim pt As PivotTable
   Set pt = ActiveSheet.PivotTables(" PivotTable1 ")
   pt.ClearAllFilters
End Sub

이 특정 매크로는 PivotTable1 이라는 피벗 테이블에서 모든 필터를 지웁니다.

다음 예에서는 이러한 각 방법을 실제로 사용하는 방법을 보여줍니다.

예 1: 값을 기준으로 피벗 테이블 필터링

다양한 팀과 포지션의 농구 선수들이 득점한 점수를 요약하기 위해 Excel의 데이터 세트에서 피벗 테이블을 만들었다고 가정해 보겠습니다.

Position 열의 값이 Guard인 행만 표시하도록 피벗 테이블을 필터링한다고 가정해 보겠습니다.

이를 위해 다음 매크로를 생성할 수 있습니다:

 SubFilterPivotTable ()
   Dim pf As PivotField
   Dim myFilter As String
   Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
   myFilter = ActiveWorkbook.Sheets(" Sheet1 ").Range(" J2 ").Value
   pf.PivotFilters.Add2 xlCaptionEquals, , myFilter
End Sub

이 매크로를 실행하면 피벗 테이블이 자동으로 필터링되어 Position 열의 값이 Guard인 행만 표시됩니다.

VBA 필터의 피벗 테이블

피벗 테이블은 위치 열의 값이 Guard인 행만 표시하도록 필터링되었습니다.

예 2: 여러 값을 기준으로 피벗 테이블 필터링

대신 Position 열의 값이 Guard 또는 Center인 행만 표시하도록 피벗 테이블을 필터링한다고 가정해 보겠습니다.

이를 위해 다음 매크로를 생성할 수 있습니다:

 Sub FilterPivotTableMultiple()
  Dim v Ace Variant
  Dim i As Integer, j As Integer
  Dim pf As PivotField
  Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
  
  'specify range with values to filter on
  v = Range(" J2:J3 ")
  
  'clear existing filters
  pf.ClearAllFilters
  
  'apply filter to pivot table
  With pf
    For i = 1 TB pf.PivotItems.Count
      j = 1
      Do While j <= UBound(v, 1) - LBound(v, 1) + 1
         If pf.PivotItems(i).Name = v(j, 1) Then
           pf.PivotItems(pf.PivotItems(i).Name).Visible = True
           Exit Do
        Else
          pf.PivotItems(pf.PivotItems(i).Name).Visible = False
       End If
        j = j + 1
      Loop
    Next i
 End With
End Sub

이 매크로를 실행하면 피벗 테이블이 자동으로 필터링되어 Position 열의 값이 Guard 또는 Center인 행만 표시됩니다.

여러 값을 기반으로 하는 VBA 필터의 피벗 테이블

위치 열의 값이 가드 또는 센터인 행만 표시하도록 피벗 테이블이 필터링되었습니다.

추가 리소스

다음 자습서에서는 VBA에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

VBA:피벗 테이블을 새로 고치는 방법
VBA:중복값을 제거하는 방법
VBA:범위 내 행 수를 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다