- 최초 작성일: 2001-12-20
- 최종 수정일: 2026-09-30
- 조회수: 10 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: VBA로 피벗 테이블 건들기3
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
몇 강좌동안 계속해서 피벗 테이블을 VBA로 컨트롤 하는 여러 가지 방법들에 대해 살펴보고 있습니다. '이제 그만 건들어라!'는 요청이 아직 없으므로 계속 피벗 테이블을 가지고 공부를 해 보도록 하지요.
피벗 테이블은 기능이 막강할 뿐더러 융통성도 매우 뛰어납니다. 행과 열의 위치를 마음대로 바꿀 수도 있고, 불필요하다고 생각되는 필드를 숨길 수도 있습니다.
VBA로 피벗 테이블 건들기3
핵심 요약: 피벗 테이블 보기 방식 전환
PivotItems의 Visible 속성으로 월별·분기별 항목을 보이거나 숨기고, ColumnGrand·RowGrand 속성으로 합계를 조절하면 하나의 피벗 테이블을 여러 방식으로 보여 줄 수 있습니다.
- 1단계: 컨트롤 도구 상자의 옵션 버튼과 체크 박스를 시트에 배치합니다.
- 2단계: Click 이벤트에서 PivotItems의 Visible 속성을 True/False로 지정합니다.
- 3단계: ColumnGrand, RowGrand 속성에 체크 박스 값을 넘겨 합계를 조절합니다.
Stage 시트와 컨트롤 도구 상자
이번 강좌에서는 피벗 테이블을 하나 만들어 놓고 사용자의 필요에 따라 늘었다 줄었다, 합계를 보이게 했다가 사라지게 했다가(무슨 약장사가 광고를 하는 듯 합니다 ^^) 하는 방법에 대해 설명을 드리겠습니다.
아래의 버튼을 눌러서 예제 시트로 가신 다음, 여러 버튼들을 눌러 보세요.
Step 1: 월별 데이터 보기
재미있지요? Stage 시트에서 사용된 옵션 버튼이나, 체크 박스는 양식 도구모음의 컨트롤이 아닌 컨트롤 도구 모음의 그것들을 사용한 것입니다. 따라서 디자인 편집 모드가 아닌 상태에서는 편집을 하실 수 없습니다. 양식 도구모음의 컨트롤을 사용하려다가 어떤 분의 질문 내용이 생각나서 일부러 컨트롤 도구 모음의 컨트롤을 사용해 보았습니다. 경각심을 환기시키는 차원에서… ^^
Stage 시트의 버튼이나 체크 박스에 대한 편집 작업을 하시려면, '보기-도구 모음-컨트롤 도구 상자'를 선택하시고 '디자인 모드' 아이콘을 한번 눌러 디자인 편집 모드로 들어간 상태라야 합니다. 양식 도구모음과 컨트롤 도구 모음은 아주 비슷하게 생겨 먹어서 많은 초보님들을 헷갈리게 하니까 혼동하지 않도록 잘 기억해 두시기 바랍니다.
워크시트에 옵션 버튼이나 체크 박스를 그리는 것은 아실 테니까 각 오브젝트에 연결된 코드를 살펴보도록 하겠습니다.
먼저 "월별 데이터 보기" 옵션 버튼에 연결된 코드입니다.
Private Sub optMonth_Click()
With ActiveSheet.PivotTables(1).PivotFields("Month")
.PivotItems("Jan").Visible = True
'''코드는 아주 간단합니다. PivotItems 오브젝트의 Visible 속성을 사용하여
'''특정 월의 값을 보이거나 숨기는 것입니다.
.PivotItems("Feb").Visible = True
.PivotItems("Mar").Visible = True
.PivotItems("Apr").Visible = True
.PivotItems("May").Visible = True
.PivotItems("Jun").Visible = True
.PivotItems("1/4분기").Visible = False
.PivotItems("2/4분기").Visible = False
.PivotItems("상반기").Visible = False
ActiveWorkbook.ShowPivotTableFieldList = False
End With
End Sub
Step 2: 분기 데이터 보기
아래는 "분기 데이터 보기" 버튼에 연결된 코드입니다. 위의 것과 마찬가지로 Visible 속성값의 조절을 통해 보여줄 필드와 숨길 필드를 결정합니다. 분기에 해당되는 데이터만 Visible 속성을 True, 즉 1로 지정합니다.
Private Sub optQuarter_Click()
With ActiveSheet.PivotTables(1).PivotFields("Month")
.PivotItems("1/4분기").Visible = True
.PivotItems("2/4분기").Visible = True
.PivotItems("상반기").Visible = False
.PivotItems("Jan").Visible = False
.PivotItems("Feb").Visible = False
.PivotItems("Mar").Visible = False
.PivotItems("Apr").Visible = False
.PivotItems("May").Visible = False
.PivotItems("Jun").Visible = False
End With
ActiveWorkbook.ShowPivotTableFieldList = False
End Sub
Step 3: 전체 보기
이번에는 모든 값들을 다 보여주는 코드입니다. 당연히 모든 값의 Visible 속성을 True로 지정하면 되는 것이지요.
Private Sub optTotal_Click()
With ActiveSheet.PivotTables(1).PivotFields("Month")
.PivotItems("Jan").Visible = True
.PivotItems("Feb").Visible = True
.PivotItems("Mar").Visible = True
.PivotItems("Apr").Visible = True
.PivotItems("May").Visible = True
.PivotItems("Jun").Visible = True
.PivotItems("1/4분기").Visible = True
.PivotItems("2/4분기").Visible = True
.PivotItems("상반기").Visible = True
End With
ActiveWorkbook.ShowPivotTableFieldList = False
End Sub
Step 4: 합계 보이기/숨기기
마지막으로, 피벗 테이블의 가로/세로 방향 합계를 보이거나 숨기기 위한 코드입니다.
Private Sub chkShowTotal_Click()
With ActiveSheet.PivotTables(1)
.ColumnGrand = chkShowTotal.Value
.RowGrand = chkShowTotal.Value
'''피벗 테이블의 합계 부분은 ColumnGrand 또는 RowGrand 속성의 조절을 통해 가능합니다.
'''속성값이 1이면(즉 체크 표시가 되어있으면) 합계를 나타내고 속성값이 0이면 합계를
'''숨깁니다.
End With
ActiveWorkbook.ShowPivotTableFieldList = False
If chkShowTotal.Value Then
MsgBox "데이터의 합계를 표시하였습니다", , "Display Summing//By Exceller"
End If
End Sub
마무리
코드 자체는 크게 복잡하지 않을 것입니다. 간단한 코드들을 어떻게 잘 조합해서 사용을 하느냐, 어떻게 응용을 하느냐의 문제일 따름입니다.
올 연말은 예년보다 훨씬 정신없이 지나가는 듯 합니다. 강좌 파일은 고사하고 홈 페이지에 답 글 달기에도 힘이 들 경우가 많이 있습니다. 무단 결강(?) 또는 답글이 제 때 올라오지 않더라도 노여워 마시기를 바랍니다.
오늘은 여기까지…
정리 — 피벗 표시 제어 핵심
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 월별 보기 | .PivotItems("Jan").Visible = True | 월 항목만 표시 |
| 분기 보기 | .PivotItems("1/4분기").Visible = True | 분기 항목만 표시 |
| 전체 보기 | 모든 PivotItems Visible = True | 월·분기·반기 모두 표시 |
| 합계 표시 | .ColumnGrand / .RowGrand = chkShowTotal.Value | 가로·세로 합계 조절 |
| 필드 목록 | ActiveWorkbook.ShowPivotTableFieldList = False | 필드 목록 창 닫기 |
자주 묻는 질문 (FAQ)
Q1. 피벗 테이블의 특정 항목을 VBA로 숨기려면 어떻게 하나요?
PivotFields("필드명").PivotItems("항목명").Visible = False 로 지정하면 해당 항목이 숨겨집니다.
Q2. 피벗 테이블의 총합계를 보이거나 숨기려면 어떻게 하나요?
PivotTable의 ColumnGrand와 RowGrand 속성을 True 또는 False로 지정합니다.
Q3. 컨트롤 도구 상자의 컨트롤은 왜 편집이 안 되나요?
디자인 모드 아이콘을 눌러 디자인 편집 모드로 들어간 상태에서만 편집할 수 있습니다.
마치며
PivotItems.Visible과 ColumnGrand 속성만 알면 피벗 테이블을 사용자 선택에 따라 자유롭게 늘이고 줄일 수 있습니다.