Option Explicit
Public Sub TallyData()
Const PIVOT_TALLY As String = "pvtTally"
Dim wsScratch As Worksheet
Dim wsPivot As Worksheet
Dim wsResults As Worksheet
Dim numrows As Long
Dim nextrow As Long
Dim i As Long
Sheets(Array("Co1", "Co2", "Co3", "Co4", "Co5", "Co6", "Co7", "Co8")).Select
With Selection
.Range("P1").Value = "Co1"
.Range("Q1").Value = "Co2"
.Range("P1:Q1").AutoFill Destination:=.Range("P1:W1"), Type:=xlFillDefault
End With
Application.ScreenUpdating = False
Worksheets("Co1").Select
Set wsScratch = Worksheets.Add
Worksheets("Co1").Rows(1).Copy wsScratch.Range("A1")
nextrow = 2
For i = 1 To 8
With Worksheets("Co" & i)
numrows = .Cells(.Rows.Count, "A").End(xlUp).Row - 1
.Range("C2").Resize(numrows).Copy .Cells(2, 15 + i)
.Rows(2).Resize(numrows).Copy wsScratch.Cells(nextrow, "A")
nextrow = nextrow + numrows
End With
Next i
Set wsPivot = Worksheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:=wsScratch.Name & "!R1C1:R" & nextrow - 1 & "C23", _
Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:=wsPivot.Name & "!R1C1", _
TableName:="pvtTALLY", _
DefaultVersion:=xlPivotTableVersion14
ActiveWorkbook.ShowPivotTableFieldList = True
With wsPivot
With .PivotTables("pvtTally")
With .PivotFields("CUST#")
.Orientation = xlRowField
.Position = 1
End With
With .PivotFields("CUST-NAME")
.Orientation = xlRowField
.Position = 2
End With
With .PivotFields("ADDRESS")
.Orientation = xlRowField
.Position = 3
End With
With .PivotFields("CITY")
.Orientation = xlRowField
.Position = 4
End With
With .PivotFields("ZIP")
.Orientation = xlRowField
.Position = 5
End With
.AddDataField .PivotFields("12 MOýSALES"), "12 MOýSALES ", xlSum
.AddDataField .PivotFields("12 MOýGROSS"), "12 MOýGROSS ", xlSum
.AddDataField .PivotFields("12 MOýCREDITS"), "12 MOýCREDITS ", xlSum
.AddDataField .PivotFields("Co1"), "Co1 ", xlSum
.AddDataField .PivotFields("Co2"), "Co2 ", xlSum
.AddDataField .PivotFields("Co3"), "Co3 ", xlSum
.AddDataField .PivotFields("Co4"), "Co4 ", xlSum
.AddDataField .PivotFields("Co5"), "Co5 ", xlSum
.AddDataField .PivotFields("Co6"), "Co6 ", xlSum
.AddDataField .PivotFields("Co7"), "Co7 ", xlSum
.AddDataField .PivotFields("Co8"), "Co8 ", xlSum
.PivotFields("CUST#").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("CUST-NAME").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("12 MOýSALES").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("12 MOýGROSS").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("12 MOýCREDITS").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("12 MOýGP %").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("12 MOýRET %").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("SALE-TYPE").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("ADDRESS").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("CITY").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("ZIP").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("PHONE#").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("SHIP VIA").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("COMPANY").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("HS").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("Co1").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("Co2").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("Co3").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("Co4").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("Co5").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("Co6").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("Co7").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.PivotFields("Co8").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
.ColumnGrand = False
.RowGrand = False
.HasAutoFormat = False
.InGridDropZones = True
.ShowDrillIndicators = False
.RowAxisLayout xlTabularRow
End With
End With
Set wsResults = Worksheets.Add
wsResults.Name = "Tally"
With wsResults
wsPivot.PivotTables("pvtTALLY").TableRange1.Offset(1, 0).Copy wsResults.Range("A1")
.Columns("B:E").EntireColumn.AutoFit
.Columns("F:H").NumberFormat = "#,##0.00"
.Columns("I:P").NumberFormat = "#,##0"
.Columns("I:I").Insert Shift:=xlToRight
.Range("I1").Value = "12 MOýRET %"
numrows = .Cells(.Rows.Count, "A").End(xlUp).Row - 1
.Range("I2").Resize(numrows).Formula = "=-H2/(F2+H2)"
.Columns("I").NumberFormat = "0.00%"
.Range("A2").Select
ActiveWindow.FreezePanes = True
End With
For i = 1 To 8
Worksheets("Co" & i).Columns("P:W").Delete
Next i
Application.DisplayAlerts = False
wsScratch.Delete
wsPivot.Delete
Application.ScreenUpdating = True
End Sub