首页 文章

Excel VBA数据透视图

提问于
浏览
0

我正在尝试编写一个用于创建数据透视表的宏 . 在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

1 回答

  • 0

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

    另外,使用这样的代码:

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

    它更健壮,更容易调试 . 如果在宏运行时单击其他工作表,则会失败 . 使用上面的代码,这不会发生 . 一般来说,请避免使用ActiveSheet和ActiveWorkbook .

相关问题