VBA数据透视表

2018-06-26 17:21:27 浏览数 (1)

代码语言:javascript复制
ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=sh & "!R1C1:R" & rn & "C22", _
    Version:=4 _
    ).CreatePivotTable _
    TableDestination:="Sheet1!R1C1", _
    TableName:="数据透视表1", _
    DefaultVersion:=4
    'xlPivotTableVersion10=1(03)11=2()12=3()14=4(2010)~15=5(2013)6(2016)
    '必须在表激活情况下才能操作表中的数据透视表
With ActiveSheet.PivotTables("数据透视表1")
    '报表布局设置
    .RowAxisLayout xlTabularRow 'xlTabularRow表格,xlOutlineRow大纲,xlCompactRow压缩(默认)
    .RepeatAllLabels xlRepeatLabels 'xlRepeatLabels重复,xlDoNotRepeatLabels不重复(默认)
    '总计
    .ColumnGrand = False '.ColumnGrand列.RowGrand行'默认都启用True
    
    '行列筛选分类汇总域
    pf = Array("类型", "拣货员名称", "逻辑区号", "任务领取时间")
    For Each pfi In pf
    With .PivotFields(pfi)
        .Orientation = xlRowField
        .Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
    End With
    Next
    
    '.Orientation = xlRowField / xlColumnField / xlPageField
    '.Position = 1 '插入位置
    '.分类汇总 = Array (自动,求和,计数,平均值,最大值,最小值,乘积,数值计数,标准偏差,总体标准差,方差,总体方差)
    '.Subtotals = Array(Atuo,Sum,Count,Average,Max,Min,Product,Count Nums,StdDev,StdDevp,Var,Varp)
    '.SubtotalLocation xlAtTop '分类汇总位置xlAtTop顶部,xlAtBottom底部(默认)
    
    '值域与格式
    .AddDataField .PivotFields("拣货完成时间"), "最后拣货完成时间", xlMax
    .PivotFields("最后拣货完成时间").NumberFormat = "yyyy/m/d h:mm:ss"
    .AddDataField .PivotFields("实际拣货量"), "行", xlCount
    .AddDataField .PivotFields("实际拣货量"), "件", xlSum
    
    '全选透视表
    .PivotSelect "", xlDataAndLabel, True
    'PivotSelect 对象,模式,[允许宏]
    '模式:xlBlanks/xlButton/xlDataOnly/xlFirstRow/xlLabelOnly/xlOrigin/xlDataAndLabel(默认但必须)
End With

0 人点赞