Sub AddPovitTable() 'Constance Const DATA_SHEET As String = "Advanced Filter" Const DATA_ADDRESS As String = "R7C1:R107C11" Const PIVOT_SHEET As String = "PivotSheet" ' Sheet Name with No space Const PIVOT_ADDRESS As String = "R3C1" Const PIVOT_TABLE As String = "Pivot Table" 'Object Dim Wb As Workbook Dim Sht As Worksheet Dim pvtTable As PivotTable Set Wb = ThisWorkbook 'Do not display Alert when delete a sheet Application.DisplayAlerts = False For Each Sht In Wb.Worksheets If Sht.Name = PIVOT_SHEET Then Sht.Delete Next Sht Application.DisplayAlerts = True 'Add a new sheet for pivot table Set Sht = Wb.Worksheets.Add(After:=Wb.Worksheets(Wb.Worksheets.Count)) Sht.Name = PIVOT_SHEET 'Create a new pivot table Set pvtTable = Wb.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=DATA_SHEET & "!" & DATA_ADDRESS, _ Version:=xlPivotTableVersion15). _ CreatePivotTable( _ TableDestination:=PIVOT_SHEET & "!" & PIVOT_ADDRESS, _ TableName:=PIVOT_TABLE, _ DefaultVersion:=xlPivotTableVersion15) 'set Fields With pvtTable .PivotFields("State").Orientation = xlRowField .PivotFields("State").Position = 1 .PivotFields("City").Orientation = xlRowField .PivotFields("City").Position = 2 .PivotFields("Salesperson").Orientation = xlRowField .PivotFields("Salesperson").Position = 3 .PivotFields("Payment").Orientation = xlRowField .PivotFields("Payment").Position = 4 .PivotFields("Transport").Orientation = xlRowField .PivotFields("Transport").Position = 5 .PivotFields("Month").Orientation = xlRowField .PivotFields("Month").Position = 6 .AddDataField .PivotFields("Product A"), "Sum:Product A", xlSum .AddDataField .PivotFields("Product B"), "Sum:Product B", xlSum .AddDataField .PivotFields("Product C"), "Sum:Product C", xlSum End With 'Release Objects Set Wb = Nothing Set Sht = Nothing Set pvtTable = Nothing End Sub