Here is another approach that will sort as you wish simply by double clicking the column that you wish to sort.
Copy this event handler to the clipboard (highlight the entire event handler, right click inside the highlighted area, and 'Copy'):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim i, LastRow
LastRow = Application.Cells. _
SpecialCells(xlCellTypeLastCell).Row
Application.ScreenUpdating = False
For i = 1 To LastRow
For j = 1 To Len(Cells(i, Target.Column))
If IsNumeric(Mid(Cells(i, Target.Column), j, 1)) Then
tval = tval & Mid(Cells(i, Target.Column), j, 1)
End If
Next j
Cells(i, "IV").Value = tval
tval = ""
Next i
Columns("A:IV").Select
Selection.Sort Key1:=Range("IV1"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Columns("IV:IV").ClearContents
Cells(1, Target.Column).Select
End Sub
Select the worksheet containing the data that you wish to sort and right click the sheet tab at the bottom.
Select 'View Code'.
Paste the event handler into the white editing area to the right (right click inside the area and 'Paste').
Close the VBE (red button w/white 'x' - top right).
To sort, double click any cell in the column containing the data to be sorted. If your data changes, or gets compromised again, simply double click any cell in the column again.