- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 엑셀 GETPIVOTDATA 함수가 피벗 테이블에서 예상과 다른 값을 반환할 때의 원인과 해결책을 체계적으로 정리하여, 현장에서 바로 적용 가능한 점검 절차와 안전한 작성 패턴, 대안 공식을 제공하는 것이다.
1. GETPIVOTDATA 동작 원리 핵심 요약
GETPIVOTDATA는 지정한 피벗 테이블 범위에서 필드·항목·집계 항목을 키-값 쌍으로 검색하여 단일 셀 값을 반환한다. 주소 참조가 아닌 메타데이터 참조 기반이므로 피벗 구조가 바뀌어도 안정적으로 값을 찾아야 한다. 다만 필드 캡션, 항목 표시 이름, 집계명, 표시형식, 그룹화, 필터 가시성 등에 의존하므로 작은 차이에도 결과가 달라질 수 있다.
=GETPIVOTDATA("합계 매출",$A$3,"지역","서울","제품","A") 위 예시는 피벗 테이블 왼쪽 위 셀(피벗 앵커)로 $A$3을 사용하고, 데이터 필드 캡션이 “합계 매출”인 값을 지역=서울, 제품=A 조건으로 검색한다.
2. “예상치 못한 결과”가 발생하는 대표 패턴
2.1 데이터 필드 캡션 불일치
피벗 테이블 필드 목록의 원본 필드명과 피벗에 표시되는 캡션은 다를 수 있다. 사용자가 “값 필드 설정”에서 이름을 바꾸면 캡션이 변경된다. 이때 GETPIVOTDATA의 첫 번째 인수는 표시 캡션과 정확히 일치해야 한다.
=GETPIVOTDATA("매출 합계",$A$3,"지역","서울") 'X =GETPIVOTDATA("합계 매출",$A$3,"지역","서울") 'O 2.2 항목 이름과 표시 이름의 혼동
원본 값이 “Seoul”이지만 피벗에서 표시 이름을 “서울”로 바꾸면, GETPIVOTDATA 조건 인수도 “서울”로 작성해야 한다. 그룹화된 날짜 항목도 표시 단위(연, 분기, 월)에 따라 문자열 표현이 달라진다.
=GETPIVOTDATA("합계 매출",$A$3,"지역","Seoul") 'X =GETPIVOTDATA("합계 매출",$A$3,"지역","서울") 'O 2.3 “표시 형식”과 값 오해
피벗에서 “값 표시 형식”을 백분율, 천단위, 통화로 바꾸어도 GETPIVOTDATA는 기저 수치를 반환한다. 반면 “표시 형식”이 아니라 “표시 방법”을 “행 %”나 “기준 대비 차이”로 바꾼 경우에는 변환된 결과를 반환한다.
2.4 필터·슬라이서 가시성에 따른 Null 반환
조건 조합이 현재 피벗의 가시 항목과 일치하지 않으면 오류 또는 0을 반환한다. 슬라이서로 필터링된 항목은 숨김으로 처리되므로 검색 대상이 사라진다.
2.5 동일 캡션 필드 중복
서로 다른 원본 필드가 피벗에서 동일 캡션으로 표시되면 GETPIVOTDATA는 매칭 혼선이 생긴다. 캡션을 고유하게 유지하거나 피벗을 분리해야 한다.
2.6 데이터 모델(OLAP) 기반 피벗의 한계
Power Pivot이나 데이터 모델을 사용한 피벗은 필드·측정값 구조가 OLAP 스키마를 따른다. 이 경우 GETPIVOTDATA가 기대대로 동작하지 않거나 복잡한 이름공간이 필요하다. CUBE 함수로 전환하는 편이 안전하다.
=CUBEVALUE($B$2,"[Measures].[합계 매출]","[지역].[서울]","[제품].[A]") 2.7 자동 생성 끄기 설정
피벗 범위를 클릭 후 일반 수식을 입력할 때 자동으로 GETPIVOTDATA가 생성되지 않도록 옵션을 꺼 둘 수 있다. 이 경우 사용자는 수동 작성 중 인수 순서를 틀리기 쉽다.
'경로: 피벗 테이블 도구 > 분석(또는 옵션) > GETPIVOTDATA 생성을 사용 2.8 스마트 따옴표, 공백, 숨은 문자
웹에서 복사한 따옴표가 곡선형(“ ”)이면 함수가 문자열을 제대로 인식하지 못한다. 불가시 공백이나 줄바꿈 문자가 포함될 수도 있다.
=GETPIVOTDATA("합계 매출",$A$3,"지역",TRIM(CLEAN(H1))) 2.9 날짜 그룹화와 텍스트 매칭
날짜 필드가 월 단위로 그룹화되면 항목 텍스트가 “2025-10” 또는 “2025년 10월” 등으로 바뀐다. 이 문자열과 동일하게 인수를 작성해야 한다. 지역 설정에 따라 표현이 다르다.
2.10 계산 항목·보조 합계가 꺼진 경우
필드의 보조 합계가 해제되면 특정 기준의 합계 셀 자체가 사라진다. 사라진 셀을 가리키는 GETPIVOTDATA는 실패한다.
3. 실패를 줄이는 작성 패턴
3.1 피벗 앵커 셀을 명시
피벗 테이블 왼쪽 상단 셀을 고정 앵커로 사용한다. 피벗 이동에도 안전하다.
=LET( anchor,$A$3, GETPIVOTDATA("합계 매출",anchor,"지역",E2,"제품",F2) ) 3.2 표시 캡션을 셀 참조로 관리
데이터 필드 캡션과 조건 필드 캡션을 시트 상단에 정의해 변경에 강하게 만든다.
=GETPIVOTDATA($B$1,$A$3,$B$2,$E$2,$B$3,$F$2) 'B1=데이터 필드 캡션, B2=필드1 캡션, B3=필드2 캡션 3.3 동적 텍스트 정규화
사용자 입력을 정규화해 표기 요동에 대응한다.
=LET( raw,E2, key,SUBSTITUTE(TRIM(raw)," ",""), GETPIVOTDATA("합계매출",$A$3,"지역",key,"제품",SUBSTITUTE(F2," ","")) ) 3.4 날짜 키 생성
=GETPIVOTDATA("합계 매출",$A$3,"월",TEXT($H$2,"yyyy-mm")) 피벗 그룹 표시가 “yyyy-mm”이라면 TEXT로 동일 포맷을 강제한다.
3.5 오류 내성 공식을 적용
=IFERROR( GETPIVOTDATA($B$1,$A$3,$B$2,$E$2,$B$3,$F$2), 0 ) 의도치 않은 누락에 대해 0을 기본값으로 반환하게 한다.
3.6 데이터 모델 사용 시 CUBE 함수 전환
데이터 모델 기반 피벗이라면 CUBEVALUE·CUBEMEMBER로 전환하면 이름공간을 명시적으로 제어할 수 있다.
=CUBEVALUE($B$2,"[Measures].[" & $B$1 & "]","[지역].[" & $E$2 & "]","[제품].[" & $F$2 & "]") 4. 실전 점검 체크리스트
| 항목 | 확인 방법 | 해결 포인트 |
|---|---|---|
| 데이터 필드 캡션 | 값 필드 설정의 “이름” 확인 | 첫 인수 캡션과 일치하도록 수정한다 |
| 필드 캡션 | 행/열/필터의 표시 이름 확인 | 조건 인수의 필드 이름을 표시 캡션으로 쓴다 |
| 항목 표시 이름 | 그룹화·사용자 변경 여부 확인 | 조건 값 문자열을 표시 이름과 동일하게 맞춘다 |
| 필터·슬라이서 | 가시성 및 선택 상태 확인 | 숨김 항목을 해제하거나 조건을 조정한다 |
| 표시 방법 | 값 표시 방법 설정 확인 | 원시 합계가 필요하면 일반 합계로 되돌린다 |
| 중복 캡션 | 동일 캡션 필드 존재 여부 | 고유 캡션으로 분리한다 |
| 데이터 모델 | 피벗이 “데이터 모델 사용”인지 확인 | CUBE 함수로 전환한다 |
| 스마트 따옴표 | 문자열 따옴표 형태 확인 | 직선 따옴표로 교체한다 |
| 날짜 포맷 | 그룹 단위·표기 규칙 확인 | TEXT로 동일 포맷을 생성한다 |
| 자동 생성 옵션 | GETPIVOTDATA 생성 사용 여부 | 초기에는 켜서 패턴을 캡처한다 |
5. 견고한 레이아웃 패턴 예시
아래 패턴은 “캡션 정의 영역+입력 파라미터+결과” 3구역으로 나누어 유지보수를 단순화한다.
A B C D E F 1 레이블 값(캡션) 설명 파라미터 레이블 값 2 데이터필드 합계 매출 값 필드명 지역 =E2 입력 3 필드1 지역 행 필드 제품 =F2 입력 4 필드2 제품 행/열필드 월 =TEXT(H2,"yyyy-mm") =LET( anchor,$A$3, dcap,$B$2, f1,$B$3, v1,$E$2, f2,$B$4, v2,$F$2, GETPIVOTDATA(dcap,anchor,f1,v1,f2,v2) ) 6. 대안 공식을 선택해야 하는 경우
6.1 원본 표가 있고 피벗 구조가 자주 변할 때
SUMIFS·COUNTIFS 등 조건 합계가 더 안정적이다. 단 대용량에서는 성능을 점검해야 한다.
=SUMIFS(tbl[매출],tbl[지역],E2,tbl[제품],F2) 6.2 다차원 모델·측정값을 써야 할 때
데이터 모델을 쓰는 경우 CUBE 함수로 명시적으로 쿼리한다.
6.3 피벗 결과를 다시 피벗하는 2차 집계가 필요할 때
GETPIVOTDATA로 끌어온 값들을 일반 범위로 취급해 추가 집계를 할 때 계산 일관성 문제가 생긴다. Power Query로 원본을 정규화하여 다시 모델링하는 편이 안전하다.
7. 자주 발생하는 오류별 처방
7.1 0 또는 빈값 반환
- 조건 조합이 현재 가시 항목과 불일치한 경우이다.
- 보조 합계가 꺼져 기준 셀 자체가 없는 경우이다.
- 표시 방법이 “차이” 등 상대 계산이라 기준이 없는 경우이다.
=IF( GETPIVOTDATA($B$1,$A$3,$B$2,$E$2)="", NA(), GETPIVOTDATA($B$1,$A$3,$B$2,$E$2) ) 7.2 #REF! 또는 #N/A
- 첫 인수 캡션 오타이다.
- 필드 캡션 또는 항목명이 존재하지 않는다.
- 피벗 앵커가 피벗 범위를 벗어났다.
7.3 중복 필드에서 엉뚱한 교차점 반환
동일 캡션의 필드를 분리하거나 고유 캡션을 부여한다.
8. VBA로 구조 메타데이터 진단
피벗의 실제 필드명·캡션·가시 항목을 목록화하면 불일치를 빠르게 찾을 수 있다.
Sub DumpPivotMeta() Dim pt As PivotTable, pf As PivotField, pi As PivotItem, r As Long Set pt = ActiveSheet.PivotTables(1) r = 2 With Sheets("Meta") .Cells(1, 1).Resize(1, 5).Value = Array("FieldCaption","SourceName","Orientation","ItemCaption","Visible") For Each pf In pt.PivotFields If pf.Orientation <> xlHidden Then If pf.PivotItems.Count = 0 Then .Cells(r, 1).Resize(1, 5).Value = Array(pf.Caption, pf.SourceName, pf.Orientation, "", "") r = r + 1 Else For Each pi In pf.PivotItems .Cells(r, 1).Resize(1, 5).Value = Array(pf.Caption, pf.SourceName, pf.Orientation, pi.Caption, pi.Visible) r = r + 1 Next pi End If End If Next pf End With End Sub 결과 시트에서 Caption과 SourceName 차이를 확인하고 GETPIVOTDATA 인수를 Caption 기준으로 맞춘다.
9. 동적 공식 템플릿
아래 템플릿은 유연하게 캡션·조건을 확장한다.
=LET( anchor,$A$3, dcap,$B$2, f, $B$3:$B$10, v, $E$3:$E$10, n, COUNTA(f), args, DROP(TOCOL(CHOOSE({1,2},TAKE(f,n),TAKE(v,n))),,0), GETPIVOTDATA(dcap,anchor,args) ) 필요한 필드·값 쌍을 위쪽에서 추가·삭제만 하면 된다.
10. 날짜·계층 구조 안전 매핑
계층형 필드(지역>도시, 카테고리>제품군)와 날짜 그룹을 동시에 쓰면 문자열 조합이 복잡해진다. 아래 매핑 표로 키를 표준화한다.
| 입력 | 표준화 키 | 피벗 표시 값 |
|---|---|---|
| Seoul | 서울 | 서울 |
| 2025/10 | 2025-10 | 2025-10 |
| 전자·가전 | 전자가전 | 전자가전 |
=LET(x,E2, MAP_KEY, XLOOKUP(x,맵[입력],맵[표준화키],x), GETPIVOTDATA("합계 매출",$A$3,"지역",MAP_KEY)) 11. 성능 고려 사항
- GETPIVOTDATA는 피벗 결과를 조회하므로 대량 호출 시 피벗 캐시 상태에 의존한다.
- 피벗 새로 고침이 느릴 경우 원본 정규화, 집계 필드 축소, 불필요한 계산 필드 제거가 효과적이다.
- 대량 셀에서 반복 호출 시 LET로 공통 인수를 캐싱한다.
12. 재현 가능한 디버그 절차
- 피벗 앵커 확인과 고정이다.
- 데이터 필드 캡션을 첫 인수로 복사-붙여넣기 한다.
- 필드 캡션과 항목 표시 이름을 시각적으로 대조한다.
- 필터·슬라이서 해제 후 결과 비교한다.
- 값 표시 방법을 “기본값”으로 되돌려 원시 값을 검증한다.
- 날짜·계층형 문자열을 TEXT·XLOOKUP으로 표준화한다.
- 데이터 모델 기반이면 CUBEVALUE로 상호 검증한다.
- VBA 메타덤프를 실행하여 Caption/SourceName 불일치를 해소한다.
13. 안전한 자동 생성 워크플로
- 피벗에서 값을 클릭하여 자동 생성된 GETPIVOTDATA를 획득한다.
- 공식의 캡션·항목 문자열을 상단 정의 영역으로 치환한다.
- 조건 값을 셀 참조로 교체한다.
- LET로 앵커·캡션·조건을 변수화한다.
- IFERROR로 기본값을 지정한다.
14. 실제 현장 예제
매출 피벗의 구조가 지역(행), 제품(열), 값=합계 매출일 때 서울×A를 조회한다.
=LET( anchor,$A$3, dcap,"합계 매출", GETPIVOTDATA(dcap,anchor,"지역","서울","제품","A") ) 같은 구조에서 월별 그룹을 포함하면 다음과 같이 확장한다.
=LET( anchor,$A$3, dcap,"합계 매출", mkey, TEXT($H$2,"yyyy-mm"), GETPIVOTDATA(dcap,anchor,"지역",$E$2,"제품",$F$2,"월",mkey) ) 15. 품질 보증 포인트
- 캡션과 항목 문자열은 시트 상단에서만 관리한다.
- 피벗 구조 변경 후 샘플 조합 3개 이상으로 교차검증한다.
- 데이터 모델 전환 시 CUBE 버전 공식을 병행 배치하여 비교한다.
FAQ
GETPIVOTDATA가 자동으로 안 만들어질 때 어떻게 하나
피벗 셀을 선택한 상태에서 일반 셀에 등호를 입력한 뒤 값 셀을 클릭하면 자동 생성된다. 리본의 피벗 테이블 도구에서 “GETPIVOTDATA 생성을 사용”을 켠다.
값 표시 방법을 %로 바꾸면 함수도 %를 반환하나
그렇다. “값 표시 방법”은 계산 변환이므로 변환된 결과를 반환한다. 반면 단순 표시 형식은 값에 영향을 주지 않는다.
데이터 모델 피벗에서 항목 이름이 인식되지 않는다
OLAP 구조에서는 계층·멤버 경로가 필요하다. CUBEVALUE로 전환하여 측정값과 멤버를 명시한다.
피벗 복사본에서 값을 못 찾는다
앵커가 다른 피벗을 가리키는지 확인한다. 각 피벗 왼쪽 상단 셀을 별도 명명하여 사용한다.
날짜를 직접 조건값으로 넣으면 안 맞는다
그룹 표시 문자열과 동일 포맷으로 TEXT 변환하여 키를 만든다.