要创建数据透视表,需要提供源数据以从中生成数据透视表。
我为此目的生成了一个“虚拟”表,其中包含原始数据,如:
我需要从该数据生成数据透视表,以便生成如下:
IOW,它需要在“描述”列上有一个过滤器,允许过滤行(仅显示“Peppers”或其他)和过滤器,在哪个月份列上显示(工作表最多可以有13个)月份列(9月15日,10月15日等))以便用户可以选择1月13日的那些“月份”列进行显示(从技术上讲,他们可以选择0,但重点是什么?)
如何做到这一点?我尝试了以下内容:
private void AddPivotTable()
{
var dataRange
rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Address];
dataRange.AutoFitColumns();
var pivotTable
usagePivotWorksheet.PivotTables.Add(usagePivotWorksheet.Cells["A6"]
dataRange, "ProdUsagePivot");
pivotTable.MultipleFieldFilters = 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;
var descPageField = pivotTable.Fields["Description"];
pivotTable.PageFields.Add(descPageField);
descPageField.Sort
OfficeOpenXml.Table.PivotTable.eSortType.Ascending;
var descRowField = pivotTable.Fields["Description"];
pivotTable.RowFields.Add(descRowField);
. . . add others later
}
...但只获得“描述”的过滤器,其下方没有数据:
我还需要做些什么来获得所需的外观/功能?
答案 0 :(得分:2)
试试这个:
照常创建整个PivotTable
,在添加所有必填字段和计算后,将DataPivotFields
移至RowFields
。
在VBA中会是这样的:
With PivotTable
.DataPivotField.Orientation = xlRowField
.Position = 2
End With
还需要应用此选项:PivotTable.MergeLabels = True
以便为所有相应的总计合并Description
单元格。
PD。将PivotTable替换为代码中的数据透视表对象