피벗 테이블에 대한 VBA 가이드

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 4월 1, 2023

이 튜토리얼에서는 VBA를 사용하여 피벗 테이블로 작업하는 방법을 보여드립니다.

피벗 테이블은 데이터에서 주요 인사이트와 요약을 도출하는 데 사용할 수 있는 데이터 요약 도구입니다. 아래 그림과 같이 판매된 제품의 세부 정보가 포함된 A1:D21 셀의 원본 데이터 집합이 있다고 가정해 보겠습니다:

GetPivotData를 사용하여 값 가져오기

값/데이터 필드에 Sales(매출)가 있고 행 필드에 Product(제품), 열 필드에 Region(지역)이 있는 PivotTable1이라는 피벗 테이블이 있다고 가정하겠습니다. 피벗 테이블에서 값을 반환하려면 PivotTable.GetPivotData 메서드를 사용할 수 있습니다.

다음 코드는 피벗 테이블에서 ₩1,130(동부 지점의 총 매출)을 반환합니다:

MsgBox ActiveCell.PivotTable.GetPivotData("판매가격", "지역", "동부지점")

이 경우 판매가격은 “DataField”, “Field1″은 지역, “Item1″은 동부지점입니다.

다음 코드는 피벗 테이블에서 ₩980(북부지점의 제품 ABC에 대한 총 매출)을 반환합니다:

MsgBox ActiveCell.PivotTable.GetPivotData("판매가격", "제품", "ABC", "지역", "북부지점")

이 경우 판매가격는 “DataField”, “Field1″은 제품, “Item1″은 ABC, “Field2″는 지역, “Item2″는 북부지점입니다.

필드를 2개 이상 포함할 수도 있습니다.

GetPivotData의 구문은 다음과 같습니다:

GetPivotData (DataFieldField1Item1Field2Item2…) 

Parameter Description
Datafield 숫자가 포함된 매출, 수량 등의 데이터 필드입니다.
Field 1 테이블의 열 또는 행 필드 이름입니다.
Item 1 필드 1에 있는 항목의 이름(선택 사항)입니다.
Field 2 테이블의 열 또는 행 필드 이름(선택 사항)입니다.
Item 2 필드 2에 있는 항목의 이름(선택 사항)입니다.

 

시트에 피벗 테이블 만들기

위의 데이터 범위를 기반으로 활성 통합 문서의 Sheet1에 있는 J2 셀에 피벗 테이블을 만들려면 다음 코드를 사용합니다:

Worksheets("Sheet1").Cells(1, 1).Select

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

 "Sheet1!R1C1:R21C4", Version:=xlPivotTableVersion15).CreatePivotTable _

  TableDestination:="Sheet1!R2C10", TableName:="PivotTable1", DefaultVersion _

  :=xlPivotTableVersion15

  Sheets("Sheet1").Select

결과는 다음과 같습니다:

새 시트에 피벗 테이블 만들기

활성 통합 문서의 새 시트에서 위의 데이터 범위를 기반으로 피벗 테이블을 만들려면 다음 코드를 사용합니다:

Worksheets("Sheet1").Cells(1, 1).Select

Sheets.Add

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

 "Sheet1!R1C1:R21C4", Version:=xlPivotTableVersion15).CreatePivotTable _

  TableDestination:="Sheet2!R3C1", TableName:="PivotTable1", DefaultVersion _

  :=xlPivotTableVersion15

  Sheets("Sheet2").Select

피벗 테이블에 필드 추가하기

위의 데이터 범위를 기반으로 새로 만든 피벗 테이블에 PivotTable1 이라는 필드를 추가할 수 있습니다. 참고: 피벗 테이블이 포함된 시트는 활성 시트여야 합니다.

행 필드에 제품을 추가하려면 다음 코드를 사용합니다:

ActiveSheet.PivotTables("PivotTable1").PivotFields("제품").Orientation = xlRowField

ActiveSheet.PivotTables("PivotTable1").PivotFields("제품").Position = 1

열 필드에 지역을 추가하려면 다음 코드를 사용합니다:

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역").Orientation = xlColumnField

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역").Position = 1

통화 서식을 사용하여 값 섹션에 판매가격을 추가하려면 다음 코드를 사용합니다:

ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _

        "PivotTable1").PivotFields("판매가격"), "판매가격 합계", xlSum

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("판매가격 합계")

        .NumberFormat = "$#,##0.00"

End With

실행 결과는 아래와 같습니다:

피벗 테이블의 보고서 레이아웃 변경하기

피벗 테이블의 보고서 레이아웃을 변경할 수 있습니다. 다음 코드는 피벗 테이블의 보고서 레이아웃을 표 형식으로 변경합니다:

ActiveSheet.PivotTables("PivotTable1").TableStyle2 = "PivotStyleLight18"

피벗 테이블 삭제하기

VBA를 사용하여 피벗 테이블을 삭제할 수 있습니다. 다음 코드는 활성 시트에서 PivotTable1 이라는 피벗 테이블을 삭제합니다:

ActiveSheet.PivotTables("PivotTable1").PivotSelect "", xlDataAndLabel, True
Selection.ClearContents

통합 문서의 모든 피벗 테이블 서식 지정하기

VBA를 사용하여 통합 문서에 있는 모든 피벗 테이블의 서식을 지정할 수 있습니다. 다음 코드는 통합 문서의 모든 시트를 반복하기 위해 루프 구조를 사용하여 통합 문서의 모든 피벗 테이블에 서식을 지정합니다:

Sub FormattingAllThePivotTablesInAWorkbook()
Dim wks As Worksheet
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim pt As PivotTable

For Each wks In wb.Sheets
For Each pt In wks.PivotTables
pt.TableStyle2 = "PivotStyleLight15"
Next pt
Next wks

End Sub

VBA에서 반복을 사용하는 방법에 대해 자세히 알아보려면 여기를 클릭하세요.

피벗 테이블의 필드 제거하기

VBA를 사용하여 피벗 테이블에서 필드를 제거할 수 있습니다. 다음 코드는 활성 시트의 피벗 테이블에서 피벗 테이블1이라는 이름의 피벗 테이블에서 행 섹션의 Product 필드를 제거합니다:

ActiveSheet.PivotTables("PivotTable1").PivotFields("Product").Orientation = _
xlHidden

필터 만들기

행 섹션에 제품이 있고 값 섹션에 판매가격이 있는 피벗 테이블 PivotTable1이 만들어졌습니다. VBA를 사용하여 피벗 테이블에 대한 필터를 만들 수도 있습니다. 다음 코드는 필터 섹션에서 지역을 기준으로 필터를 만듭니다:

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역").Orientation = xlPageField

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역").Position = 1

단일 보고서 항목(이 경우 동부지역)을 기준으로 피벗 테이블을 필터링하려면 다음 코드를 사용합니다:

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역").ClearAllFilters

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역").CurrentPage = _

"동부지점"

여러 지역(이 경우 동부지점 및 북부지점)을 기준으로 피벗 테이블을 필터링하고 싶다고 가정하면 다음과 같이 코드를 작성하면 됩니다:

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역").Orientation = xlPageField

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역").Position = 1

ActiveSheet.PivotTables("PivotTable1").PivotFields("지역"). _
EnableMultiplePageItems = True

With ActiveSheet.PivotTables("PivotTable1").PivotFields("지역")

.PivotItems("남부지점").Visible = False

.PivotItems("서부지점").Visible = False

End With

피벗 테이블 새로 고침

VBA에서 피벗 테이블을 새로 고침할 수 있습니다. 다음 코드를 사용하여 VBA에서 PivotTable1 이라는 특정 테이블을 새로 고칠 수 있습니다:

ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기

AI in the VBA Editor!

AutoMacro is the ultimate VBA add-in.

AI, Generators, UI Builders, Code Library, and More!

Learn More

AutoMacro: AI in the VBA Editor!

Learn More