Sub sort()'
' sort Macro
' Daoud Shafique
' 7/25/17
' Revision 10
Dim MyRange As Range
Dim xColIndex As Integer
Dim xRowIndex As Integer
Dim myField As Long, myHdr As String
Sheets("Availability by application").Select
Range("A1").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range([A1].End(xlDown), [A1].End(xlToRight)), , xlYes).Name = "TableAll"
Range("TableAll[[#Headers],[App Cat Id]]").Select
ActiveCell.Offset(1).Select
xIndex = Application.ActiveCell.Column
xRowIndex = Application.ActiveSheet.Cells(Rows.Count, xIndex).End(xlUp).Row
Range(Cells(2, xIndex), Cells(xRowIndex, xIndex)).Select
With Selection
.NumberFormat = "0"
.Value = .Value
End With
Sheets("prior month").Select
Range("A1").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range([A1].End(xlDown), [A1].End(xlToRight)), , xlYes).Name = "TablePrior"
Range("TablePrior[[#Headers],[App Cat Id]]").Select
ActiveCell.Offset(1).Select
xIndex = Application.ActiveCell.Column
xRowIndex = Application.ActiveSheet.Cells(Rows.Count, xIndex).End(xlUp).Row
Range(Cells(2, xIndex), Cells(xRowIndex, xIndex)).Select
With Selection
.NumberFormat = "0"
.Value = .Value
End With
Sheets("Availability by application").Select
Range("TableAll[[#Headers],[Fiscal YTD]]").Select
ActiveCell.Offset(1, 1).Select
Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _
, Formula1:="=$E2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="=$E2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 192
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("TableAll[[#Headers],[SLA Target]]").Select
ActiveCell.Offset(1).Select
Range(Selection, Selection.End(xlDown)).Select
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = 2
.Color = 12611584
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Selection.Font.Bold = True
Range("TableAll[[#Headers],[Fiscal YTD]]").Select
ActiveCell.Offset(1, 1).Select
Selection.Copy
Sheets("prior month").Select
Range("TablePrior[[#Headers],[Fiscal YTD]]").Select
ActiveCell.Offset(1, 1).Select
Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Select
Selection.PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
Sheets("Availability by application").Select
Range("TableAll[[#Headers],[SLA Target]]").Select
ActiveCell.Offset(1).Select
Selection.Copy
Sheets("prior month").Select
Range("TablePrior[[#Headers],[SLA Target]]").Select
ActiveCell.Offset(1).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormats
Worksheets.Add(After:=Worksheets(Sheets.Count)).Name = "New Apps"
Sheets("Availability by application").Select
Range("TableAll[[#Headers],[Application Name]]").Select
Range("TableAll[#All]").Select
Selection.Copy
Sheets("New Apps").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "keep"
ActiveCell.Offset(1).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP([@[App Cat Id]],TablePrior[[App Cat Id]:[App Cat Id]],1,0)), ""Keep"", ""delete"")"
myHdr = "keep"
With ActiveSheet.ListObjects("TableAll5").Range
myField = .Find(myHdr).Column + 1 - .Range("A1").Column
.AutoFilter Field:=myField, Criteria1:="delete"
End With
Range("TableAll5[#Data]").Select
Selection.EntireRow.Delete
ActiveSheet.ListObjects("TableAll5").AutoFilter.ShowAllData
Range("TableAll5[keep]").EntireColumn.Hidden = True
Range("A1").Select
Columns.AutoFit
Worksheets.Add(After:=Worksheets(Sheets.Count)).Name = "Deleted Apps"
Sheets("prior month").Select
Range("TablePrior[#All]").Select
Selection.Copy
Sheets("Deleted Apps").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "keep"
ActiveCell.Offset(1).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP([@[App Cat Id]],TableAll[[App Cat Id]:[App Cat Id]],1,0)), ""Keep"", ""delete"")"
myHdr = "keep"
With ActiveSheet.ListObjects("TablePrior6").Range
myField = .Find(myHdr).Column + 1 - .Range("A1").Column
.AutoFilter Field:=myField, Criteria1:="delete"
End With
Range("TablePrior6[#Data]").Select
Selection.EntireRow.Delete
ActiveSheet.ListObjects("TablePrior6").AutoFilter.ShowAllData
Range("TablePrior6[keep]").EntireColumn.Hidden = True
Range("A1").Select
Columns.AutoFit
Sheets("Availability by application").Select
Range("A1").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "Status"
ActiveCell.Offset(1).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP([@[App Cat Id]],Apps[[App Cat Id]:[Application Name]],2,0)), ""Not Payment"", ""Payment"")"
Sheets("prior month").Select
Range("A1").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "Status"
ActiveCell.Offset(1).Select
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP([@[App Cat Id]],Apps[[App Cat Id]:[Application Name]],2,0)), ""Not Payment"", ""Payment"")"
Sheets("Availability by application").Select
Worksheets.Add(After:=Worksheets(Sheets.Count)).Name = "Payment Apps"
Worksheets.Add(After:=Worksheets(Sheets.Count)).Name = "New Payment Apps"
Worksheets.Add(After:=Worksheets(Sheets.Count)).Name = "Deleted Payment Apps"
Sheets("Availability by application").Select
myHdr = "Status"
With ActiveSheet.ListObjects("TableAll").Range
myField = .Find(myHdr).Column + 1 - .Range("A1").Column
.AutoFilter Field:=myField, Criteria1:="Payment"
End With
Range("TableAll[#All]").Select
Selection.Copy
Sheets("Payment Apps").Select
Range("A1").Select
ActiveSheet.Paste
Columns.AutoFit
Sheets("Payment Apps").Select
Range("A1").Select
Set Rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))
Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, Rng, , xlYes)
tbl.Name = "PayAll"
tbl.TableStyle = "TableStyleLight10"
Sheets("Availability by application").Select
myHdr = "Status"
With ActiveSheet.ListObjects("TableAll").Range
myField = .Find(myHdr).Column + 1 - .Range("A1").Column
.AutoFilter Field:=myField, Criteria1:="Payment"
End With
Range("TableAll[#All]").Select
Selection.Copy
Sheets("New Payment Apps").Select
Range("A1").Select
ActiveSheet.Paste
Columns.AutoFit
Range("A1").Select
Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Select
Set Rng = Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column))
Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, Rng, , xlYes)
tbl.Name = "PayNew"
tbl.TableStyle = "TableStyleLight10"
Range("B1").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "keep"
ActiveCell.Offset(1).Select
Selection.FormulaArray = _
"=IFERROR(IF(ISERROR(INDEX(TablePrior,MATCH(1,(TablePrior[[App Cat Id]:[App Cat Id]]=[@[App Cat Id]])*(TablePrior[[Status]:[Status]]=[@Status]),0),2)),""keep"",""delete""),""error"")"
myHdr = "keep"
With ActiveSheet.ListObjects("PayNew").Range
myField = .Find(myHdr).Column + 1 - .Range("A1").Column
.AutoFilter Field:=myField, Criteria1:="delete"
End With
Range("PayNew[#Data]").Select
Selection.EntireRow.Delete
ActiveSheet.ListObjects("PayNew").AutoFilter.ShowAllData
Range("A1").Select
Sheets("prior month").Select
myHdr = "Status"
With ActiveSheet.ListObjects("TablePrior").Range
myField = .Find(myHdr).Column + 1 - .Range("A1").Column
.AutoFilter Field:=myField, Criteria1:="Payment"
End With
Range("TablePrior[#All]").Select
Selection.Copy
Sheets("Deleted Payment Apps").Select
Range("A1").Select
ActiveSheet.Paste
Columns.AutoFit
Range("A1").Select
Set Rng = Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column))
Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, Rng, , xlYes)
tbl.Name = "PayDeleted"
tbl.TableStyle = "TableStyleLight10"
Range("B1").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "keep"
ActiveCell.Offset(1).Select
Selection.FormulaArray = _
"=IFERROR(IF(ISERROR(INDEX(TableAll,MATCH(1,(TableAll[[App Cat Id]:[App Cat Id]]=[@[App Cat Id]])*(TableAll[[Status]:[Status]]=[@Status]),0),2)),""keep"",""delete""),""error"")"
myHdr = "keep"
With ActiveSheet.ListObjects("PayDeleted").Range
myField = .Find(myHdr).Column + 1 - .Range("A1").Column
.AutoFilter Field:=myField, Criteria1:="delete"
End With
Range("PayDeleted[#Data]").Select
Selection.EntireRow.Delete
ActiveSheet.ListObjects("PayDeleted").AutoFilter.ShowAllData
Range("A1").Select
Range("A1").Select
Sheets("prior month").Select
ActiveSheet.ListObjects("TablePrior").AutoFilter.ShowAllData
Range("A1").Select
Sheets("Availability by application").Select
Range("TableAll[Status]").EntireColumn.Hidden = True
Range("TablePrior[Status]").EntireColumn.Hidden = True
Range("PayAll[Status]").EntireColumn.Hidden = True
Range("PayNew[Status]").EntireColumn.Hidden = True
Range("PayNew[keep]").EntireColumn.Hidden = True
Range("PayDeleted[Status]").EntireColumn.Hidden = True
Range("PayDeleted[keep]").EntireColumn.Hidden = True
Sheets("prior month").Select
Range("A1").Select
Sheets("New Apps").Select
Range("A1").Select
Sheets("Deleted Apps").Select
Range("A1").Select
Sheets("New Payment Apps").Select
Range("A1").Select
Sheets("Deleted Payment Apps").Select
Range("A1").Select
Sheets("Availability by application").Select
ActiveSheet.ListObjects("TableAll").AutoFilter.ShowAllData
Range("A1").Select
sFName = Application.GetSaveAsFilename
If sFName <> "False" Then ActiveWorkbook.SaveAs sFName
End Sub