[]
This function returns visible data from a Pivot Table. It queries the pivot table and gets the specific data based on the pivot table structure, instead of cell references. The main advantage of using this function is that it ensures that the correct data is returned, even if the pivot table layout is changed.
=GETPIVOTDATA(data_field, pivot_table, [field1, item1, field2, item2], ...)
This function has the following arguments:
Arguments | Descriptions |
---|---|
data_field | The name of the PivotTable field that contains the data you want to retrieve. This needs to be in double-quotes. |
pivot_table | A reference to any cell, range of cells, or named range of cells in a PivotTable. This information is used to determine which PivotTable contains the data that you want to retrieve. |
field1, item1, field2, item2.. | [Optional] Up to 126 pairs of field names and item names that describe the data that you want to retrieve. The pairs can be in any order. |
You can enter the GETPIVOTDATA function by using = (the equal sign) in the cell in which you want to return the value. You can also use this function with other functions.
The following points hold true while working with the GETPIVOTTABLE function:
#REF! error value occurs in the following cases:
If the given pivot_table reference is not related to the pivot table.
If an invalid field for the data_field, [field], or [item] arguments is provided.
If the arguments do not describe a visible field, or if they include a report filter in which the filtered data is not displayed.
When there is a sigma value, the data_field will contain calc type, otherwise, it will use the field name only.
Returns visible data from a pivot table.
The following images show the usage of the GETPIVOTDATA function.
The following code sample shows the usage of the GETPIVOTDATA function.
$(document).ready(function () {
// initializing Spread
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 2 });
spread.suspendPaint();
// get sheets
var pivotLayoutSheet = spread.getSheet(0);
var dataSourceSheet = spread.getSheet(1);
// set sheet name
pivotLayoutSheet.name("PivotLayout");
dataSourceSheet.name("DataSource");
// set row count
dataSourceSheet.setRowCount(245);
// set datasource
dataSourceSheet.setArray(0, 0, pivotDB_UseCase);
// add table to dataSourceSheet
dataSourceSheet.tables.add('tableSales', 0, 0, 245, 8);
spread.resumePaint();
// initialize pivottable
initPivotTable(pivotLayoutSheet);
// auto fit columns in both the sheets
autoFit(pivotLayoutSheet);
autoFit(dataSourceSheet);
});
function initPivotTable(sheet) {
// add pivottable
var myPivotTable = sheet.pivotTables.add("myPivotTable", "tableSales", 0, 0, GC.Spread.Pivot.PivotTableLayoutType.tabular, GC.Spread.Pivot.PivotTableThemes.dark3);
myPivotTable.suspendLayout();
// show rowHeader and columnHeader for PivotTable
myPivotTable.options.showRowHeader = true;
myPivotTable.options.showColumnHeader = true;
// add column fields
myPivotTable.add("Category", "Category", GC.Spread.Pivot.PivotTableFieldType.columnField);
// add row fields
myPivotTable.add("Region", "Region", GC.Spread.Pivot.PivotTableFieldType.rowField);
myPivotTable.add("City", "City", GC.Spread.Pivot.PivotTableFieldType.rowField);
// add value field with SubtotalType Sum
myPivotTable.add("Quantity", "Sum of quantity", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
// add filter field
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) {
// auto fit columns
let columnCount = sheet.getColumnCount();
for (let i = 0; i < columnCount; i++) {
sheet.autoFitColumn(i);
}
}
The GETPIVOTDATA function also supports spilling, which means, it can populate multiple cells with its results. However, the allowDynamicArray
property should be set to true to observe the spilling results. The below image shows a pivot table that will be used to extract some meaningful results using the GETPIVOTDATA function.
The below image shows the output when the GETPIVOTDATA function is used in the above pivot table and the result is spilled to multiple cells.
The following code sample shows the usage of the GETPIVOTDATA function to get results that spill to multiple cells.
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);
}