Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: 张雄友

[已解决]用宏代替数据透视,录制宏代码不行的。

[复制链接]
 楼主| 发表于 2014-5-21 18:51 | 显示全部楼层
hwc2ycy 发表于 2014-5-21 10:05

有二个问题存在。

EXCEL2010.rar

28.44 KB, 下载次数: 3

回复

使用道具 举报

发表于 2014-5-21 22:26 | 显示全部楼层
不显示字段列表
    ActiveWorkbook.ShowPivotTableFieldList = False

评分

参与人数 1 +3 收起 理由
张雄友 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-5-21 22:35 | 显示全部楼层
  1. Sub 组别用数据透视()    '
  2.     On Error Resume Next
  3.     Dim pc As PivotCache
  4.     Dim pt As PivotTable
  5.     Dim pf As PivotField
  6.     Set pc = ActiveWorkbook.PivotCaches.Create(xlDatabase, SourceData:= _
  7.                                                Sheets("明细").Range("A1:N" & Sheets("明细").[A65536].End(xlUp).Row))
  8.     Set pt = pc.CreatePivotTable("")
  9.     ActiveWorkbook.ShowPivotTableFieldList = False
  10.     With pt

  11.         With .PivotFields("组别")
  12.             .Orientation = xlRowField
  13.         End With

  14.         .AddDataField .PivotFields("组别"), , xlCount
  15.         .AddDataField .PivotFields("金额"), , xlSum
  16.         .AddDataField .PivotFields("金额"), , xlAverage

  17.         With .PivotFields("车间")
  18.             .Orientation = xlRowField
  19.         End With

  20.         With .PivotFields("组别")
  21.             .Orientation = xlRowField
  22.         End With
  23.         For Each pf In .PivotFields
  24.             pf.Subtotals = Array(False, _
  25.                                  False, False, False, False, False, False, False, False, False, False, False)
  26.         Next
  27.     End With
  28. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
张雄友 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-5-21 22:37 | 显示全部楼层
  1. Sub 组别用数据透视()    '
  2.     On Error Resume Next
  3.     Dim pc As PivotCache
  4.     Dim pt As PivotTable
  5.     Dim pf As PivotField, a As Object
  6.     Set pc = ActiveWorkbook.PivotCaches.Create(xlDatabase, SourceData:= _
  7.                                                Sheets("明细").Range("A1:N" & Sheets("明细").[A65536].End(xlUp).Row))
  8.     Set pt = pc.CreatePivotTable("")
  9.     ActiveWorkbook.ShowPivotTableFieldList = False
  10.     With pt

  11.         With .PivotFields("组别")
  12.             .Orientation = xlRowField
  13.         End With

  14.         .AddDataField .PivotFields("组别"), , xlCount
  15.         .AddDataField .PivotFields("金额"), , xlSum
  16.         .AddDataField .PivotFields("金额"), , xlAverage

  17.         With .PivotFields("车间")
  18.             .Orientation = xlRowField
  19.         End With

  20.         With .PivotFields("组别")
  21.             .Orientation = xlRowField
  22.         End With
  23.         .PivotFields.Subtotals = Array(False, _
  24.                                  False, False, False, False, False, False, False, False, False, False, False)
  25.     End With
  26. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
张雄友 + 3 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-5-21 22:42 | 显示全部楼层
hwc2ycy 发表于 2014-5-21 22:35

每个车间多了一空行。

EXCEL2010.rar

30.98 KB, 下载次数: 2

回复

使用道具 举报

发表于 2014-5-21 23:05 | 显示全部楼层    本楼为最佳答案   
  1. Sub 组别用数据透视()    '
  2.     On Error Resume Next
  3.     Dim pc As PivotCache
  4.     Dim pt As PivotTable
  5.     Dim pf As PivotField
  6.     Set pc = ActiveWorkbook.PivotCaches.Create(xlDatabase, SourceData:= _
  7.                                                Sheets("明细").Range("A1:N" & Sheets("明细").[A65536].End(xlUp).Row))
  8.     Set pt = pc.CreatePivotTable("")
  9.     ActiveWorkbook.ShowPivotTableFieldList = False
  10.     With pt
  11.         .PivotFields("组别").Orientation = xlRowField
  12.         .AddDataField .PivotFields("组别"), , xlCount
  13.         .AddDataField .PivotFields("金额"), , xlSum
  14.         .AddDataField .PivotFields("金额"), , xlAverage
  15.         .PivotFields("车间").Orientation = xlRowField
  16.         .PivotFields("组别").Orientation = xlRowField
  17.         For Each pf In .PivotFields
  18.             pf.Subtotals = Array(False, _
  19.                                  False, False, False, False, False, False, False, False, False, False, False)
  20.         Next
  21.         .RowAxisLayout xlTabularRow
  22.     End With
  23. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-5-21 23:16 | 显示全部楼层
hwc2ycy 发表于 2014-5-21 23:05

结果在A2单元格开始生成的,怎么令它可以从A1单元格开始生成?
回复

使用道具 举报

发表于 2014-5-22 00:05 | 显示全部楼层
在最后的end with上面加一行:.ShowValuesRow = False

评分

参与人数 1 +3 收起 理由
张雄友 + 3 生成数据透视怎么可以令其按3A,3B,3C,2G.

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-5-22 05:34 | 显示全部楼层
hwc2ycy 发表于 2014-5-22 00:05
在最后的end with上面加一行:.ShowValuesRow = False

生成的数据透视怎么可以令它按 3A,3B,3C,2G,2H,2J 的顺序输出结果????
回复

使用道具 举报

发表于 2014-5-22 10:18 | 显示全部楼层
张雄友 发表于 2014-5-22 05:34
生成的数据透视怎么可以令它按 3A,3B,3C,2G,2H,2J 的顺序输出结果????

直接录制宏吧。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-1 00:07 , Processed in 0.345377 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表