Как получить среднее значение "Grand Total", а не сумму?
Я получаю (бесплатно) столбец "Общий итог" в моей сводной таблице:
Для "TotalQty" и "TotalPrice" это отлично, но для "AvgPrice" и "PrcntgOfTotal" не так много.
Как я могу получить эти значения, чтобы показать среднее значение в первом случае, а не сумму?
проценты за месяц - это% от TotalPrice к сумме за этот месяц (не общая сумма за все месяцы); поэтому GrandTotal.PrcntgOfTotal также не должен быть средним из месячных значений.
Вот код, который у меня есть, который генерирует эту сводную таблицу:
private void PopulatePivotTableSheet()
{
string NORTHWEST_CORNER_OF_PIVOT_TABLE = "A6";
AddPrePivotTableDataToPivotTableSheet();
var dataRange = rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Address];
dataRange.AutoFitColumns();
var pivotTable = pivotTableWorksheet.PivotTables.Add(
pivotTableWorksheet.Cells[NORTHWEST_CORNER_OF_PIVOT_TABLE],
dataRange,
"PivotTable");
pivotTable.MultipleFieldFilters = true;
//pivotTable.RowGrandTotals = true; <= default setting
//pivotTable.ColumGrandTotals = true; <= default setting
//pivotTable.RowGrandTotals = false; // this prevents the "Grand Total" column
//pivotTable.ColumGrandTotals = false; // this prevents the totals rows at the bottom
//pivotTable.Compact = true;
//pivotTable.CompactData = true;
pivotTable.GridDropZones = false;
pivotTable.Outline = false;
pivotTable.OutlineData = false;
pivotTable.ShowError = true;
pivotTable.ErrorCaption = "[error]";
pivotTable.ShowHeaders = true;
pivotTable.UseAutoFormatting = true;
pivotTable.ApplyWidthHeightFormats = true;
pivotTable.ShowDrill = true;
// Row field[s]
var descRowField = pivotTable.Fields["Description"];
pivotTable.RowFields.Add(descRowField);
// Column field[s]
var monthYrColField = pivotTable.Fields["MonthYr"];
pivotTable.ColumnFields.Add(monthYrColField);
// Data field[s]
var totQtyField = pivotTable.Fields["TotalQty"];
pivotTable.DataFields.Add(totQtyField);
var totPriceField = pivotTable.Fields["TotalPrice"];
pivotTable.DataFields.Add(totPriceField);
// Don't know how to calc these vals here, so had to put them on the data sheet
var avgPriceField = pivotTable.Fields["AvgPrice"];
pivotTable.DataFields.Add(avgPriceField);
var prcntgOfTotalField = pivotTable.Fields["PrcntgOfTotal"];
pivotTable.DataFields.Add(prcntgOfTotalField);
}
1 ответ
pivotTable.DataFields[DATAFIELD NUM].Function =
OfficeOpenXml.Table.PivotTable.DataFieldFunctions.Average
Обратите внимание, что DATAFIELD NUM - это индекс в наборе полей данных. Определено в:
OfficeOpenXml.Table.PivotTable.ExcelPivotTableDataFieldCollection