Sub RankNames()
Dim LastRow As Long, WS1 As Worksheet, WS2 As Worksheet
Set WS1 = Sheets("Sheet1")
Set WS2 = Sheets("Sheet2")
LastRow = WS1.Cells(Rows.Count, "D").End(xlUp).Row
WS2.Range("D6:J" & LastRow).ClearContents
With WS2.Range("D6:D" & LastRow)
.Value = Evaluate(Replace( Replace("IF({1},MID(LEFT('@'!#,FIND("" "",'@'!#)-1),FIND("" "",'@'!#)+1,99))", "@", WS1.Name), "#", .Address))
.Copy .Offset(, 4)
.Offset(, 1).Value = Evaluate("IF({1},SUBSTITUTE(SUBSTITUTE('" & WS1.Name & "'!" & .Offset(, 3).Address & ","")"",""""),""*"",""""))")
.Offset(, 1).Replace "* ", "", xlPart, , , , False, False
.Offset(, 1).Value = Evaluate(Replace( Replace("IF({1},RANK('@'!#,'@'!#))", "@", WS2.Name), "#", .Offset(, 1).Address))
.Offset(, 5).Value = Evaluate(Replace( Replace("IF({1},LEFT('@'!#,FIND("" "",'@'!#)-1))", "@", WS1.Name), "#", .Offset(, 9).Address))
.Offset(, 4).Resize(, 2).Sort WS2.Columns("I"), xlDescending
.Offset(, 6).Formula = "=IF(I5<>I6,J5+1,J5)"
.Offset(, 6).Value = .Offset(, 6).Value
End With
End Sub
Bookmarks