Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 엑셀에서 피벗 테이블이 새로고침되지 않거나 값이 갱신되지 않는 문제를 유형별로 진단하고, 실무에서 바로 적용 가능한 단계별 해결책과 예방 설정을 제공하는 것이다.
피벗 테이블 이슈는 크게 두 가지로 나뉜다. 첫째, 새로고침을 해도 값 자체가 갱신되지 않는 경우이다. 둘째, 원본에 새 행·열을 추가했는데 피벗에 반영되지 않는 경우이다. 두 경우 모두 접근법이 다르므로 먼저 현상을 구분하는 것이 중요하다.
| 증상 | 주 원인 | 핵심 조치 |
|---|---|---|
| 새로고침 후 값 불변 | 계산 모드 수동, 연결 속성 비활성, 캐시 손상, 필드 항목 고정 | 자동 계산 전환, 연결 속성 확인, 캐시 재생성, MissingItemsLimit 설정 |
| 새로 추가한 행·열 미반영 | 원본이 고정 범위, 표(Table) 참조 미사용, 데이터 모델 맵핑 누락 | 원본을 표로 변환, 피벗 원본 다시 지정, Power Query 단계 점검 |
Ctrl+Alt+F5이다.원본 범위를 선택하고 Ctrl+T로 표로 변환한 뒤, 표 이름을 tblSales처럼 의미 있게 지정한다. 이후 피벗 테이블의 원본 데이터를 이 표로 연결하면 행 추가 시 자동 확장된다.
tblSales로 지정한다.tblSales로 설정한다.표 사용이 곤란한 경우 동적 범위를 정의한다. 다음은 첫 열 기준으로 빈 셀 없이 연속된 데이터에 적합한 예시이다.
이름: rngSales 참조 대상(수식): =OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1)) 정의 후 피벗 원본을 rngSales로 지정한다. 열 중앙에 빈 값이 존재하면 INDEX 기반 동적 참조식을 사용하는 편이 안전하다.
같은 원본을 공유하는 다수의 피벗이 있을 때 캐시가 꼬이면 갱신이 지연된다. 다음 절차로 새 피벗 캐시를 강제 생성한다.
필드 목록에 과거 항목이 계속 남아 잘못 집계되는 경우가 있다. 다음 두 가지를 조합한다.
MissingItemsLimit을 제어한다.Sub ClearOldItems() Dim pc As PivotCache For Each pc In ThisWorkbook.PivotCaches pc.MissingItemsLimit = xlMissingItemsNone Next pc ThisWorkbook.RefreshAll End Sub 파일을 열 때 자동 새로고침을 활성화한다. 피벗테이블 옵션 > 데이터에서 파일 열 때 데이터 새로 고침을 선택한다. 외부 연결 기반 피벗은 연결 속성에서 유사 옵션을 제공한다.
Power Query가 원본을 가져오고, 데이터 모델을 거쳐 피벗으로 소비되는 구조라면 새로 고침 순서를 보장해야 한다. 가장 안전한 방법은 ThisWorkbook.RefreshAll로 전체를 트리거하고, 필요 시 종속 쿼리를 마지막에 강제 새로 고침한다.
Sub RefreshPipeline() Application.Calculation = xlCalculationAutomatic ThisWorkbook.RefreshAll ' 특정 쿼리 후속 강제 새로고침 ThisWorkbook.Connections("Query - factSales").Refresh End Sub 데이터 모델에서 관계가 손상되면 일부 값이 누락된다. 다음 항목을 점검한다.
복잡한 DAX 측정값은 모델 변경 후 갱신이 지연될 수 있다. 피벗 필드 목록에서 해당 측정값을 제거했다가 다시 추가하거나, 간단한 무해한 형식 변경을 적용하여 재평가를 유도한다.
Private Sub Workbook_Open() Application.Calculation = xlCalculationAutomatic ThisWorkbook.RefreshAll End Sub 이 코드를 ThisWorkbook에 삽입하면 열자마자 전체 새로 고침이 수행된다.
Sub RebuildAllPivotCaches() Dim pc As PivotCache For Each pc In ThisWorkbook.PivotCaches pc.Refresh pc.MissingItemsLimit = xlMissingItemsNone Next pc ThisWorkbook.RefreshAll End Sub Sub PreReportCheck() Application.ScreenUpdating = False Application.Calculation = xlCalculationAutomatic Call RebuildAllPivotCaches Application.ScreenUpdating = True End Sub | 원인 | 증상 | 해결 | 예방 설정 |
|---|---|---|---|
| 수동 계산 모드 | 새로고침 후 수치 불변 | 계산 옵션 자동으로 전환 | Workbook_Open에서 자동 설정 |
| 고정 범위 원본 | 새 행 미반영 | 표로 전환, 동적 이름 정의 | 표 이름을 원본으로 고정 |
| 백그라운드 새로 고침 | 피벗이 먼저 갱신 | 연결 속성에서 해제 | 표준 템플릿에서 비활성 |
| 캐시 오래된 항목 | 사라진 값이 필터에 잔존 | MissingItemsLimit 초기화 | 사용기간 없음으로 설정 |
| 관계 불일치 | 일부 항목 누락 | 키 정합성 검사 | 쿼리 단계에서 검증 로직 추가 |
| 형식 혼재 | 합계 틀림, 개수로 집계 | 형식 통일, 변환 | Power Query에서 데이터 형식 고정 |
| 메시지/현상 | 원인 | 조치 |
|---|---|---|
| “데이터 원본을 찾을 수 없음” | 원본 워크시트/테이블 이름 변경 | 데이터 원본 변경에서 최신 표 이름 재지정 |
| “쿼리 시간이 초과됨” | 네트워크/서버 지연 | 시간 초과 상향, 필터 범위 축소, 오프라인 캐시 도입 |
| 값이 일부만 보임 | 필터 고정, 비가시 문자 | 모든 필터 초기화, TRIM/CLEAN 적용 |
Sub LogPivotRefresh() Dim ws As Worksheet, f As Integer Set ws = ThisWorkbook.Sheets("Log") If ws Is Nothing Then Exit Sub f = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1 ws.Cells(f, 1).Value = Now ws.Cells(f, 2).Value = "RefreshAll" ThisWorkbook.RefreshAll ws.Cells(f, 3).Value = "Done" End Sub 로그 시트를 만들어 새로 고침 이력을 보관하면 문제 재현 시점을 추적하기 쉽다.
피벗테이블 옵션에서 사용하지 않는 항목 표시 기간을 없음으로 바꾸고, VBA로 MissingItemsLimit를 xlMissingItemsNone으로 설정한 뒤 전체 새로 고침을 수행한다.
동적 이름 정의를 사용하여 OFFSET 또는 INDEX 기반 참조식을 만들어 원본을 이름으로 연결한다. 다만 중간 공백 열·행이 있으면 INDEX 기반이 안전하다.
연결 속성에서 백그라운드 새로 고침을 해제하고, ThisWorkbook.RefreshAll로 전체 동기 갱신을 실행한다. 필요한 경우 특정 쿼리를 후속으로 강제 새로 고침한다.
슬라이서를 선택하고 슬라이서 연결에서 대상 피벗을 일관되게 선택한다. 서로 다른 캐시를 사용하는 피벗은 동일 슬라이서로 동기화되지 않으므로 캐시 공유 여부를 조정한다.
모델을 단순화하고 필요한 열·행만 로드하며, 숫자 열을 정수로 변환한다. 피벗의 세부 항목 표시를 제한하고, 불필요한 피벗 복제를 줄인다.