我正在构建一个例程,该例程可以自动创建数据透视表。一切运行良好...我添加了行,列,过滤器和值。最后一步,我想格式化值。我找不到任何可向我显示“值输入/数据字段”结果的列。假设我有2个Value PivotFields ...
Pivot1 := fmyPivotTable.AddDataField( 'Revenue', 'Revenue', xlSum );
Pivot2 := fmyPivotTable.AddDataField( 'Locations', 'Locations', xlCount );
我正在寻找可以告诉我Pivot1数据位于C,E和G列中,而Pivot2数据位于D,F和H中的东西。我能找到的最接近的是labelrange和position,但是这两个都不是真正的我需要的。我是用Delphi编写的,但是如果有人知道如何在VBA中做到这一点,我可以转换。
其他信息。 我正在使用的代码与此类似。 (我不得不删掉一些无关的东西)。我正在寻找一种确定哪些列将保存来自v1和v2的数据的方法。
var
// Filter Fields
f1, f2: OleVariant;
// Row Fields
r1, r2 : OleVariant;
// Column Fields
c1: OleVariant;
// Value Fields
v1, v2: OleVariant;
PivotStartAddr: String;
OrigDataRange: ExcelRange;
myPivotCache: PivotCache;
myPivotTable: PivotTable;
RawSheet, PivotSheet1 : _Worksheet;
begin
RawSheet := oExcel.ActiveSheet as _Worksheet;
OrigDataRange := RawSheet.Range['A1', 'BA35285'];
// Create a Pivot Cache
myPivotCache := oExcel.ActiveWorkbook.PivotCaches.Create(xlDatabase,OrigDataRange,xlPivotTableVersion15);
// Create a New Sheet
oExcel.Worksheets.Add(EmptyParam, RawSheet, 1, xlWorksheet, LOCALE_USER_DEFAULT);
PivotSheet1 := oExcel.ActiveSheet as _Worksheet;
PivotSheet1.Name := 'Pivot Sheet';
// Create a Pivot table within the PivotCache
PivotStartAddr := 'R4C1';
myPivotTable := myPivotCache.CreatePivotTable(PivotStartAddr, 'PivotTable56', EmptyParam,xlPivotTableVersion15);
// Add Filter Fields
f1 := myPivotTable.PivotFields('OVI_MAJOR');
f1.Caption := 'Industry';
f1.Orientation := xlPageField;
f1.Position :=1 ;
f2 := myPivotTable.PivotFields('APPS_ORG_TYPE');
f2.Caption := 'Apps';
f2.Orientation := xlPageField;
f2.Position :=2 ;
// Add Rows
r1 := myPivotTable.PivotFields('PARENT_ACCOUNT_NAME');
r1.Caption := 'l Name';
r1.Orientation := xlRowField;
r1.Position := 1;
r2 := myPivotTable.PivotFields('ACCOUNT');
r2.Caption := 'Account';
r2.Orientation := xlRowField;
r2.Position := 2;
// Add Columns
c1 := myPivotTable.PivotFields('CLOUD_MARKETING_SEGMENT');
c1.Caption := 'Mkt Segment';
c1.Orientation := xlColumnField;
c1.Position := 1;
v1 := myPivotTable.AddDataField('SIC', 'SIC', xlCount);
v2 := myPivotTable.AddDataField('REVENUE', 'Revenue', xlSum);
end;