Guest User

PivotTable_VBA

a guest
Nov 16th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. Sub test()
  2.  
  3. 'Step 4: Create Pivot table
  4.  
  5. 'Declare Variables
  6. Dim PSheet As Worksheet 'used sht before
  7. Dim DSheet As Worksheet 'used sht before
  8. Dim PCache As PivotCache
  9. Dim PTable As PivotTable
  10. Dim PRange As Range 'used rng before
  11. Dim LastRow As Long 'used this before
  12. Dim LastCol As Long
  13.  
  14. 'Insert a new blank worksheet
  15. On Error Resume Next
  16. Application.DisplayAlerts = False 'https://bettersolutions.com/vba/macros/application-displayalerts.htm
  17. Worksheets("PivotTable").Delete
  18. Sheets.Add Before:=ActiveSheet
  19. ActiveSheet.Name = "PivotTable"
  20. Application.DisplayAlerts = True
  21. Set PSheet = Worksheets("PivotTable")
  22. Set DSheet = Worksheets("Data")
  23.  
  24. 'Define Data Range
  25. LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
  26. LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
  27. Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)
  28.  
  29. 'Define Pivot Cache
  30. Set PCache = ActiveWorkbook.PivotCaches.Create _
  31. (SourceType:=xlDatabase, SourceData:=PRange). _
  32. CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
  33. TableName:="SalesPivotTable")
  34.  
  35. 'Insert Blank Pivot Table
  36. Set PTable = PCache.CreatePivotTable _
  37. (TableDestination:=PSheet.Cells(1, 1), TableName:="SalesPivotTable")
  38.  
  39. 'Insert Row Fields
  40. With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("group")
  41. .Orientation = xlRowField
  42. .Position = 1
  43. End With
  44.  
  45. 'Insert Column Fields
  46. With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("Date")
  47. .Orientation = xlColumnField
  48. .Position = 1
  49. End With
  50.  
  51. 'Insert Data field (Count of "group")
  52. With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("group")
  53. .Orientation = xlDataField
  54. .Position = 1
  55. .Function = xlCount
  56. End With
  57.  
  58. 'Sort "Grand Total" by Largest to Smallest
  59.  
  60.  
  61. 'ActiveSheet.PivotTables("SalesPivotTable").PivotFields("group") _
  62. '.AutoSort xlDescending, "Grand Total"
  63.  
  64. 'With ActiveSheet.PivotTables("SalesPivotTable").PivotField("group")
  65. '.Orientation = xlColumnField
  66. '.AutoSort xlDescending
  67. 'End With
  68. '
  69. 'With Activesheet.PivotTables("SalesPivotTable").PivotFields("group").AutoSort _
  70. ' xlAscending
  71. 'End With
  72.  
  73.  
  74. End Sub
Add Comment
Please, Sign In to add comment