ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何借助数据透视表的报表筛选功能拆分工作表?

如何借助数据透视表的报表筛选功能拆分工作表?

作者:绿色风 分类: 时间:2022-08-17 浏览:136
楼主
水星钓鱼
Q:如何借助数据透视表的报表筛选功能拆分工作表?
A:以下代码借助了数据透视表的“报表筛选页”功能拆分工作表。
  1. Sub xyf()
  2.     On Error Resume Next
  3.     Dim oPC As PivotCache
  4.     Dim oPT As PivotTable
  5.     Dim oPF As PivotField
  6.     Dim oPI As PivotItem
  7.     Dim oWk As Worksheet
  8.     Dim oRng As Range
  9.     Dim sRng As String
  10.     Dim sFieldName As String
  11.     Application.DisplayAlerts = False
  12.     For Each oWk In Application.Worksheets
  13.         If oWk.Name <> Me.Name Then
  14.             oWk.Visible = xlSheetVisible
  15.             oWk.Delete
  16.         End If
  17.     Next
  18.     Set oRng = Application.InputBox(prompt:="请你选择要根据哪个字段拆分销售汇总表?", Title:="拆分总表", Type:=8)
  19.     If Err.Number = 424 Then
  20.         Exit Sub
  21.     End If
  22.     sRng = oRng.CurrentRegion.Address(False, False, xlA1, True)
  23.     If oRng.Columns.Count = 1 Then
  24.         sFieldName = oRng.End(xlUp).Value
  25.     Else
  26.         MsgBox "你选择的字段不适合用来拆分总表,请重新选择!"
  27.         Exit Sub
  28.     End If
  29.     Set oWk = ThisWorkbook.Worksheets.Add
  30.     Set oPT = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=sRng).CreatePivotTable(TableDestination:=oWk.Range("A1"))
  31.     Set oPF = oPT.PivotFields(sFieldName)
  32.     oPF.Orientation = xlPageField
  33.     oPT.ShowPages oPF
  34.     oWk.Visible = xlSheetVeryHidden
  35.     For Each oPI In oPF.PivotItems
  36.         Set oWk = ThisWorkbook.Worksheets(oPI.Caption)
  37.         Set oPT = oWk.PivotTables(1)
  38.         With oPT
  39.             .RowAxisLayout xlTabularRow
  40.             .RepeatAllLabels xlRepeatLabels
  41.             .ColumnGrand = False
  42.             .RowGrand = False
  43.             .ShowDrillIndicators = False
  44.             .EnableFieldList = False
  45.             .EnableWizard = False
  46.             For Each oPF In .PivotFields
  47.                 With oPF
  48.                     .Orientation = xlRowField
  49.                     .Subtotals(1) = False
  50.                 End With
  51.             Next
  52.             .PivotFields(sFieldName).PivotFilters.Add Type:=xlCaptionEquals, Value1:=oPI.Caption
  53.             For Each oPF In .PivotFields
  54.                 oPF.EnableItemSelection = False
  55.             Next
  56.         End With
  57.         oWk.Rows("1:2").Delete
  58.         oWk.Columns.AutoFit
  59.     Next
  60.     Set oWk = Nothing
  61.     Set oRng = Nothing
  62.     Application.DisplayAlerts = True
  63. End Sub
附件如下:

利用数据透视表的报表筛选功能拆分字段.rar
2楼
eliane_lei
跟着楼主好好学习!
3楼
老糊涂

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap