Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 엑셀에서 피벗테이블 슬라이서가 클릭해도 반응하지 않거나 일부 피벗만 필터링되는 등 작동 불능 상황을 정확히 진단하고, 현장에서 즉시 적용 가능한 해결 절차와 예방 팁, 고급 설정, VBA 점검 스크립트를 제공하는 것이다.
슬라이서는 SlicerCache라는 내부 연결을 통해 피벗테이블에 신호를 전달한다. 같은 데이터 원본과 같은 피벗캐시를 공유하는 피벗테이블은 하나의 슬라이서로 함께 제어가 가능하다. 서로 다른 캐시를 쓰는 피벗은 같은 필드명이라도 슬라이서가 통제하지 못한다. 또한 통합문서의 파일 형식, 보호 상태, 데이터 모델 사용 여부, 관계 설정, 보고서 연결(Report Connections) 구성에 따라 작동이 제한된다.
| 증상 | 가장 빈번한 원인 | 즉시 조치 |
|---|---|---|
| 슬라이서를 눌러도 피벗이 변하지 않음 | 서로 다른 피벗캐시 사용 | 피벗을 같은 원본에서 “복사-붙여넣기”로 생성하거나, 기존 피벗을 복제하여 캐시 공유하도록 재작성한다. |
| 몇 개 피벗만 동기화되고 나머지는 무반응 | 보고서 연결 누락 | 슬라이서 선택 → 피벗테이블 분석 탭 → 연결 보고서(필터 연결)에서 대상 피벗 모두 체크한다. |
| 슬라이서 삽입 메뉴가 회색 비활성 | 호환 모드(.xls) 또는 워크시트/통합문서 보호 | .xlsx로 저장하고 보호를 해제한다. |
| 값은 필터되나 빈 값만 보이거나 항목 수가 이상 | 데이터 새로 고침 누락, “데이터 없는 항목 표시” 설정 | 데이터 새로 고침 후 슬라이서 설정에서 “데이터가 없는 항목 숨기기”를 켠다. |
| 데이터 모델(관계형) 기반 피벗에서 특정 슬라이서만 작동 | 차원 테이블 관계 미설정 또는 다대다 관계 | 키 컬럼에 고유값을 보장하고 1대다 관계로 재구성한다. |
| 테이블(목록) 슬라이서만 동작하고 피벗은 무반응 | 목록 슬라이서와 피벗 슬라이서를 혼용 | 피벗 전용 슬라이서를 삽입하거나, 목록 슬라이서를 피벗에 연결할 수 없음을 인지하고 별도로 구성한다. |
| 피벗차트만 선택되어 있을 때 슬라이서가 반응 불량 | 객체 포커스 충돌 | 슬라이서를 직접 선택한 후 필터한다. 필요 시 피벗테이블을 선택해 컨텍스트를 맞춘다. |
같은 원본에서 만들어진 피벗이라도 삽입→피벗테이블을 각각 따로 실행하면 서로 다른 캐시가 생길 수 있다. 반면 기존 피벗을 복사하여 새 시트에 붙여넣으면 캐시를 공유한다. 캐시가 다르면 슬라이서가 동작하지 않는다.
연결 목록에 나타나지 않는 피벗은 캐시가 다른 것이다. 이 경우 캐시 통합 또는 데이터 모델 통합이 필요하다.
이 방식은 성능과 유지보수에 유리하다. 슬라이서가 안정적으로 동작한다.
서로 다른 테이블에서 온 피벗을 하나의 슬라이서로 제어하려면 데이터 모델로 통합해야 한다. 슬라이서 필드는 보통 차원(마스터) 테이블의 고유 키를 사용한다.
아래 코드는 캐시 진단, 슬라이서-피벗 연결 상태 점검, 대량 연결을 자동화한다.
Sub ListPivotCaches() Dim pc As PivotCache, i As Long Debug.Print "Index", "SourceData", "RecordCount" For Each pc In ThisWorkbook.PivotCaches i = i + 1 On Error Resume Next Debug.Print i, pc.SourceData, pc.RecordCount On Error GoTo 0 Next pc End Sub Sub ReportSlicerConnections() Dim sc As SlicerCache, pt As PivotTable, s As String For Each sc In ThisWorkbook.SlicerCaches s = "SlicerCache: " & sc.Name & " | Field: " & sc.SourceName Debug.Print s For Each pt In sc.PivotTables Debug.Print " - Connected PT: " & pt.Parent.Name & "!" & pt.Name Next pt Next sc End Sub Sub ConnectSlicerToAllPivots() Dim sc As SlicerCache, ws As Worksheet, pt As PivotTable Set sc = ThisWorkbook.SlicerCaches("Slicer_Region") ' 슬라이서 이름 변경 필요 For Each ws In ThisWorkbook.Worksheets For Each pt In ws.PivotTables On Error Resume Next sc.PivotTables.AddPivotTable pt On Error GoTo 0 Next pt Next ws End Sub Sub CheckCompatibilityAndProtection() If ActiveWorkbook.FileFormat = xlExcel8 Then MsgBox "현재 파일은 .xls 호환 모드이다. .xlsx로 저장해야 슬라이서를 완전 지원한다.", vbExclamation End If If ActiveSheet.ProtectContents Or ActiveWorkbook.ProtectStructure Then MsgBox "시트 또는 통합문서 보호가 활성화되어 슬라이서 동작이 제한될 수 있다.", vbExclamation End If End Sub Sub RefreshAndOptimize() Dim pt As PivotTable ThisWorkbook.RefreshAll For Each pt In ActiveSheet.PivotTables pt.EnableDrilldown = True pt.PivotCache.MissingItemsLimit = xlMissingItemsNone pt.PivotCache.Refresh Next pt End Sub | 문제 | 근본 원인 | 해결 | 예방 |
|---|---|---|---|
| 슬라이서 미작동 | 캐시 불일치 | 피벗 복제 방식 재작성 | 템플릿에서만 파생 생성 |
| 일부만 필터 | 연결 보고서 누락 | 연결 체크 재구성 | QA 체크리스트화 |
| 항목 비정상 | 새로 고침 누락, 숨김 설정 | 모두 새로 고침, 숨김 설정 조정 | 갱신 스크립트 자동화 |
| 삽입 비활성 | .xls/보호/공유문서 | .xlsx 저장, 보호 해제 | 형식 정책 준수 |
| 모델 일부만 반응 | 관계 오류, 다대다 | 1:다 관계 재설계 | 차원 키 고유성 보증 |
Sub AuditAndFixSlicers() Dim msg As String, sc As SlicerCache, pt As PivotTable, cnt As Long ' 1) 호환/보호 점검 If ActiveWorkbook.FileFormat = xlExcel8 Then msg = msg & "- 파일이 .xls 형식이다. .xlsx로 저장 필요" & vbCrLf If ActiveSheet.ProtectContents Or ActiveWorkbook.ProtectStructure Then msg = msg & "- 보호가 활성화되어 있다. 해제 필요" & vbCrLf ' 2) 슬라이서 연결 요약 For Each sc In ThisWorkbook.SlicerCaches msg = msg & "[Slicer] " & sc.Name & " / Field=" & sc.SourceName & vbCrLf cnt = 0 For Each pt In sc.PivotTables msg = msg & " -> " & pt.Parent.Name & "!" & pt.Name & vbCrLf cnt = cnt + 1 Next pt If cnt = 0 Then msg = msg & " (연결된 피벗 없음)" & vbCrLf Next sc ' 3) 리포트 출력 If Len(msg) = 0 Then msg = "점검 완료: 특이사항 없음" Debug.Print msg MsgBox "슬라이서 점검 결과가 즉시창에 출력되었다.", vbInformation End Sub 데이터 모델로 통합하고 차원 테이블을 통해 관계를 1:다로 연결하면 가능하다. 원본이 달라도 모델이 같으면 슬라이서는 동작한다.
직접 연결할 수 없다. 피벗은 피벗 슬라이서, 표는 표 슬라이서를 사용한다.
슬라이서 설정의 “데이터가 없는 항목 숨기기”를 켜고, 피벗 옵션에서 “데이터가 없는 항목 표시”를 해제한다. 이후 모두 새로 고침한다.
시트 또는 통합 문서 보호, 공유 통합 문서 설정, 또는 현재 선택이 피벗/표가 아닐 수 있다. 보호를 해제하고 피벗 또는 표를 선택한다.
캐시가 다르기 때문이다. 기존 피벗을 복제하여 동일 캐시로 만들거나 데이터 모델로 일원화한다.