# GETPIVOTDATA

## Content

이 함수는 피벗 테이블에서 표시된 데이터를 반환합니다. 피벗 테이블을 조회하여 셀 참조 대신 피벗 테이블 구조를 기반으로 특정 데이터를 가져옵니다. 이 함수 사용의 주요 장점은 피벗 테이블 레이아웃이 변경되어도 올바른 데이터가 반환된다는 점입니다.

## 구문

`=GETPIVOTDATA(data_field, pivot_table, [field1, item1, field2, item2], ...)`

## 인수

이 함수는 다음 인수를 가집니다:

| 인수                             | 설명                                                                                    |
| ------------------------------ | ------------------------------------------------------------------------------------- |
| data\_field                    | 가져오려는 데이터가 포함된 피벗테이블 필드 이름입니다. 반드시 큰따옴표로 감싸야 합니다.                                     |
| pivot\_table                   | 피벗테이블 내의 임의의 셀, 셀 범위, 또는 이름이 지정된 셀 범위 참조입니다. 이 정보는 어떤 피벗테이블에서 데이터를 가져올지 결정하는 데 사용됩니다. |
| field1, item1, field2, item2.. | \[선택 사항] 최대 126쌍의 필드 이름과 항목 이름으로, 가져오려는 데이터를 설명합니다. 쌍은 아무 순서로 나열할 수 있습니다.             |

## 사용법

GETPIVOTDATA 함수는 값을 반환하려는 셀에 등호(=)를 사용하여 입력할 수 있습니다. 다른 함수와 함께 사용할 수도 있습니다.

## 주의 사항

GETPIVOTTABLE 함수 작업 시 다음 사항이 유효합니다:

* 다음 경우 #REF! 오류가 발생합니다:

  * 지정된 pivot\_table 참조가 피벗 테이블과 관련이 없을 경우
  * data\_field, \[field], 또는 \[item] 인수에 유효하지 않은 필드가 제공된 경우
  * 인수가 표시 가능한 필드를 설명하지 않거나, 필터된 데이터가 표시되지 않는 보고서 필터를 포함하는 경우
* 시그마 값이 있을 경우 data\_field에 계산 유형이 포함되고, 그렇지 않으면 필드 이름만 사용됩니다.

## 반환 값

피벗 테이블에서 표시된 데이터를 반환합니다.

## 예제

다음 이미지는 GETPIVOTDATA 함수 사용 예를 보여줍니다.

![](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/8d606653-16a0-474d-b9dc-e2b4d01c2446/images/getpivotdata.png)

다음 코드 샘플은 GETPIVOTDATA 함수 사용 예시입니다.

```JavaScript
$(document).ready(function () {
     // Spread 초기화
     var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 2 });
     spread.suspendPaint();
     // 시트 가져오기
     var pivotLayoutSheet = spread.getSheet(0);
     var dataSourceSheet = spread.getSheet(1);
     // 시트 이름 설정
     pivotLayoutSheet.name("PivotLayout");
     dataSourceSheet.name("DataSource");
     // 행 개수 설정
     dataSourceSheet.setRowCount(245);
     // 데이터 소스 설정
     dataSourceSheet.setArray(0, 0, pivotDB_UseCase);
     // dataSourceSheet에 테이블 추가
     dataSourceSheet.tables.add('tableSales', 0, 0, 245, 8);
     spread.resumePaint();
     // 피벗테이블 초기화
     initPivotTable(pivotLayoutSheet);
     // 두 시트 모두 열 자동 맞춤
     autoFit(pivotLayoutSheet);
     autoFit(dataSourceSheet);
 });

 function initPivotTable(sheet) {
     // 피벗테이블 추가
     var myPivotTable = sheet.pivotTables.add("myPivotTable", "tableSales", 0, 0, GC.Spread.Pivot.PivotTableLayoutType.tabular, GC.Spread.Pivot.PivotTableThemes.dark3);
     myPivotTable.suspendLayout();
     // 피벗테이블의 행 헤더와 열 헤더 표시
     myPivotTable.options.showRowHeader = true;
     myPivotTable.options.showColumnHeader = true;
     // 열 필드 추가
     myPivotTable.add("Category", "Category", GC.Spread.Pivot.PivotTableFieldType.columnField);
     // 행 필드 추가
     myPivotTable.add("Region", "Region", GC.Spread.Pivot.PivotTableFieldType.rowField);
     myPivotTable.add("City", "City", GC.Spread.Pivot.PivotTableFieldType.rowField);
     // SubtotalType Sum으로 값 필드 추가
     myPivotTable.add("Quantity", "Sum of quantity", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
     // 필터 필드 추가
     myPivotTable.add("OrderDate", "OrderDate", GC.Spread.Pivot.PivotTableFieldType.filterField);
          
     var formula1 = '=GETPIVOTDATA("Quantity",$A$3)';
     sheet.setValue(3, 10, 'Total Quantity');
     sheet.setStyle(3, 10, 'introSec');
     sheet.setFormula(3, 11, formula1);

     var formula2 = '=GETPIVOTDATA("Quantity",$A$3,"Category","Bakery")';
     sheet.setValue(4, 10, 'Total Bakery Quantity');
     sheet.setStyle(4, 10, 'introSec');
     sheet.setFormula(4, 11, formula2);

     var formula3 = '=GETPIVOTDATA("Quantity",$A$3,"Region","West")';
     sheet.setValue(5, 10, 'West Region');
     sheet.setStyle(5, 10, 'introSec');
     sheet.setFormula(5, 11, formula3);

     var formula4 = '=GETPIVOTDATA("Quantity",$A$3,"Region","East","City","Jersey")';
     sheet.setValue(6, 10, 'Quantity in Jersey');
     sheet.setStyle(6, 10, 'introSec');
     sheet.setFormula(6, 11, formula4);
     myPivotTable.resumeLayout();
     return myPivotTable;
 }

 function autoFit(sheet) {
    // 열 자동 맞춤
    let columnCount = sheet.getColumnCount();
    for (let i = 0; i < columnCount; i++) {
        sheet.autoFitColumn(i);
    }
}
```

GETPIVOTDATA 함수는 또한 결과를 여러 셀에 채워 넣는 스필링(Spilling)을 지원합니다. 단, 스필링 결과를 확인하려면 `allowDynamicArray` 속성을 true로 설정해야 합니다. 아래 이미지는 GETPIVOTDATA 함수를 사용하여 의미 있는 결과를 추출할 피벗 테이블을 보여줍니다.

![pivottable\_spill.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/8d606653-16a0-474d-b9dc-e2b4d01c2446/pivottable_spill.3af547.png)

아래 이미지는 위 피벗 테이블에서 GETPIVOTDATA 함수를 사용했을 때 결과가 여러 셀로 스필된 모습을 보여줍니다.

![pivottable\_spill\_results.png](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/8d606653-16a0-474d-b9dc-e2b4d01c2446/pivottable_spill_results.1c6899.png)

다음 코드 샘플은 GETPIVOTDATA 함수가 여러 셀에 스필된 결과를 가져오는 사용 예시입니다.

```JavaScript
function setGetPivotDataFunction(sheet) {
    spread.options.allowDynamicArray = true;
    var formula = '=GETPIVOTDATA("Sum of quantity",$B$2,"City",{"Jersey";"San Francisco";"Seattle";"Washington, DC"},"Category",C11:C14,"Qt",E3:F3)';
    sheet.setStyle(1, 9, 'introSec');
    sheet.addSpan(1, 9, 2, 8, GC.Spread.Sheets.SheetArea.viewport);
    sheet.setValue(1, 9, 'Returns the spill range of total Bakery, Beverages, Chocolates and Snacks quantity sold in Jersey, San Francisco, Seattle and Washington, DC respectively in the Qtr2 & Qtr3');
    sheet.getCell(1, 9).wordWrap(true);
    sheet.setStyle(4, 9, 'formula');
    sheet.addSpan(4, 9, 2, 8, GC.Spread.Sheets.SheetArea.viewport);
    sheet.getCell(4, 9).wordWrap(true);
    sheet.setValue(4, 9, formula);
    sheet.setFormula(7, 9, formula);
}
```
