[]
        
(Showing Draft Content)

GETPIVOTDATA

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

구문

=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 함수 사용 예를 보여줍니다.




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

$(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


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


pivottable_spill_results.png


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

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);
}