【问题标题】:Excel VBA Pivot chartExcel VBA 数据透视图
【发布时间】:2013-09-09 13:50:42
【问题描述】:

我正在尝试编写一个用于创建数据透视图的宏。在 D 列的表格中,我有用户列表。一个用户名可以是 D 列中的次数。我试图从总用户数中找出每个用户名的百分比

我需要绘制一个柱形图,X 轴为用户,Y 轴为 %。图表应在 D 列中最后一个单元格的 3 行之后开始。D 列中的行数每次都会根据采样率而变化。我正在尝试这样做来自动化一些测试结果。

我试过的代码

lastTC = Range("D" & Rows.Count).End(xlUp).Row
lastTCP = lastTC + 3
lastTCP1 = lastTC + 10
lastTCC = lastTC + 18

lastTC = Range("D" & Rows.Count).End(xlUp).Row
Range("D1", "D" & lastTC).Select
 ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    ("TOPMEM!$D$1:$D" & lastTC), Version:=xlPivotTableVersion14).CreatePivotTable _
    TableDestination:=("TOPMEM!R1C10"), TableName:="PivotTable5", _
    DefaultVersion:=xlPivotTableVersion14

Sheets("TOPMEM").Select
Cells(724, 1).Select
ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("PivotTable5").PivotFields("USER")
    .Orientation = xlRowField
    .Position = 1
End With
ActiveSheet.PivotTables("PivotTable5").AddDataField ActiveSheet.PivotTables( _
    "PivotTable5").PivotFields("USER"), "Count of USER", xlCount

Range("K1").Select
With ActiveSheet.PivotTables("PivotTable9").PivotFields("Count of USER")
    .Calculation = xlPercentOfTotal
    .NumberFormat = "0.00%"
End With
ActiveWorkbook.ShowPivotTableFieldList = False

【问题讨论】:

  • 你有什么问题。它不编译吗?不跑?如果两者都有,你想解决什么问题?
  • 我收到“运行时错误 - 1004 无法获取 Worksheet 类的数据透视表属性”。

标签: vba excel charts pivot


【解决方案1】:

您的数据透视表名称一定不正确。右键单击您的数据透视表,然后从上下文菜单中选择数据透视表选项。检查弹出窗口顶部的数据透视表名称。

另外,使用这样的代码:

Sub test()
    Dim p As PivotTable
    Dim s As Worksheet
    Set s = ThisWorkbook.Sheets("Sheet4")
    Set p = s.PivotTables("PivotTable1")
End Sub

它更健壮且更易于调试。如果在宏运行时单击不同的工作表,它将失败。使用上面的代码,这不会发生。一般避免使用 ActiveSheet 和 ActiveWorkbook。

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多