I have a tab with four different sets of similar data. Each pasted from a pivot table with a different item in filter selected. I need to sort each column desc, which is why i can't leave it in the pivot. I have four sets of similar code, only the starting point of the data sets changes. When running the macro, the first data set sorts perfectly. But when i get to the apply step in the second set of code, it tells me "Run time error 1004- The sort reference is not valid. Make sure that it's within the data you want to sort, and the first Sort By Box isn't the same or blank."
Below are the first two sets of code
I can’t for the life of me figure out why I’m getting that error. I threw in those test-test4 variables to help me, but as far as i can tell the outputs are what they should be. IE test matches test3 and test2 matches test4. The ending rows and starting columns are different, but looking at the data they match.sub test() first_start = 8 second_start = 15 'Sort First Set lastrow = Cells(Rows.Count, ConvertToLetter(Val(first_start))).End(xlUp) Range(ConvertToLetter(Val(first_start)) & "4").Select Selection.End(xlToRight).Select Range(ConvertToLetter(Val(first_start)) & lastrow.Row & ":" & ConvertToLetter(ActiveCell.Column) & lastrow.Row).Insert Selection.AutoFilter 'account for column label num = 1 Dim test As String Dim test2 As String Dim test3 As String Dim test4 As String test = ConvertToLetter(first_start + num) & "5:" & ConvertToLetter(first_start + num) & lastrow.Row - 1 For Each risk In Range(ConvertToLetter(Val(first_start)) & "4:" & ConvertToLetter(ActiveCell.Column - 1) & "4") ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _ ConvertToLetter(first_start + num) & "5:" & ConvertToLetter(first_start + num) & lastrow.Row - 1), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal num = num + 1 Next risk test2 = ConvertToLetter(Val(first_start)) & "4:" & ConvertToLetter(ActiveCell.Column) & lastrow.Row - 1 With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort .SetRange Range(ConvertToLetter(Val(first_start)) & "4:" & ConvertToLetter(ActiveCell.Column) & lastrow.Row - 1) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range(ConvertToLetter(Val(first_start)) & lastrow.Row - 1 & ":" & ConvertToLetter(ActiveCell.Column) & lastrow.Row - 1).Delete 'Sort Second Set lastrow = Cells(Rows.Count, ConvertToLetter(Val(second_start))).End(xlUp) Range(ConvertToLetter(Val(second_start)) & "4").Select Selection.End(xlToRight).Select Range(ConvertToLetter(Val(second_start)) & lastrow.Row & ":" & ConvertToLetter(ActiveCell.Column) & lastrow.Row).Insert Selection.AutoFilter Selection.AutoFilter 'account for column label num = 1 test3 = ConvertToLetter(second_start + num) & "5:" & ConvertToLetter(second_start + num) & lastrow.Row - 1 For Each risk In Range(ConvertToLetter(Val(second_start)) & "4:" & ConvertToLetter(ActiveCell.Column - 1) & "4") ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add Key:=Range( _ ConvertToLetter(second_start + num) & "5:" & ConvertToLetter(second_start + num) & lastrow.Row - 1), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal num = num + 1 Next risk test4 = ConvertToLetter(Val(second_start)) & "4:" & ConvertToLetter(ActiveCell.Column) & lastrow.Row - 1 With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort .SetRange Range(ConvertToLetter(Val(second_start)) & "4:" & ConvertToLetter(ActiveCell.Column) & lastrow.Row - 1) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range(ConvertToLetter(Val(second_start)) & lastrow.Row - 1 & ":" & ConvertToLetter(ActiveCell.Column) & lastrow.Row - 1).Delete Range("A4").Select end sub Function ConvertToLetter(iCol As Integer) As String Dim iAlpha As Integer Dim iRemainder As Integer iAlpha = Int(iCol / 27) iRemainder = iCol - (iAlpha * 26) If iAlpha > 0 Then ConvertToLetter = Chr(iAlpha + 64) End If If iRemainder > 0 Then ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64) End If End Function
Capture.PNG
Any assistance would be appreciated.
Bookmarks