1

我有一个看起来像这个 数据集的数据集 但是我的天数是一个变量,并且会不断变化。

我想用VBA创建一个数据透视图,代码如下:

Sheets("Initialize").Select
NoRes = Cells(6, 3).Value
Sheets("Metric Calculations").Select
ProjDur = Cells(31, 4).Value
Range(Cells(31, 61), Cells(30 + NoRes, 61 + ProjDur)).Select
Selection.Copy
Sheets("Resource Histogram Data").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Range(Cells(1, 1), Cells(1 + NoRes, 1 + ProjDur)).Select
Application.CutCopyMode = False
r = 1 + NoRes
p = 1 + ProjDur
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Sheets("Resource Histogram Data").Range(Cells(1, 1), Cells(r, p)), Version:=6). _
    CreatePivotTable TableDestination:="Sheet1!R1C1", TableName:="PivotTable1", DefaultVersion:=6
Sheets("Sheet1").Select
Cells(1, 1).Select
ActiveWorkbook.ShowPivotTableFieldList = True
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$C$18")
With ActiveChart.PivotLayout.PivotTable.PivotFields("Resources")
    .Orientation = xlPageField
    .Position = 1
End With
    ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
        PivotTable.PivotFields("Day 1"), "Sum of Day 1", xlSum
    ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
        PivotTable.PivotFields("Day 2"), "Sum of Day 2", xlSum
    ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
        PivotTable.PivotFields("Day 3"), "Sum of Day 3", xlSum
ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
    PivotTable.PivotFields("Day 4"), "Sum of Day 4", xlSum
ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
    PivotTable.PivotFields("Day 5"), "Sum of Day 5", xlSum
ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
    PivotTable.PivotFields("Day 6"), "Sum of Day 6", xlSum
ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
    PivotTable.PivotFields("Day 7"), "Sum of Day 7", xlSum
ActiveChart.ShowValueFieldButtons = False

在代码的最后一部分中,AddDataField 重复了七次。当天数变化时(在 1 到 200 之间),理想情况下应该在 for 循环中。然而这样做显然是行不通的。

For i = 1 To ProjDur    
    ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
    PivotTable.PivotFields("Day i"), "Sum of Day i", xlSum    
Next i

如何在我的代码中获取这个 for 循环函数?

4

1 回答 1

0

这将是:

For i = 1 To ProjDur    
    ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
    PivotTable.PivotFields("Day " & i), "Sum of Day " & i, xlSum
Next i
于 2017-03-29T09:03:29.893 回答