Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig&, t, i&, ech As Boolean, aux, deb
deb = Timer
If Intersect(Target, Range("e4:e" & Rows.Count)) Is Nothing Then Exit Sub
On Error GoTo FIN: Application.EnableEvents = False
If Me.FilterMode Then Me.ShowAllData
derlig = Cells(Rows.Count, 5).End(xlUp).Row
t = Range(Cells(4, 5), Cells(derlig, 5)).Value
For i = 1 To UBound(t): t(i, 1) = Mid(t(i, 1), InStr(t(i, 1), "-") + 1) & "\" & IIf(Not Mid(t(i, 1), 5, 1) Like "#", "0", "") & t(i, 1): Next
Range(Cells(4, 5), Cells(derlig, 5)) = t
Range(Cells(4, 5), Cells(derlig, 5)).Sort Cells(4, 5), xlAscending, MatchCase:=False, Header:=xlNo
t = Range(Cells(4, 5), Cells(derlig, 5)).Value
For i = 1 To UBound(t): t(i, 1) = Mid(t(i, 1), InStr(t(i, 1), "\") + 1, 999): Next
Range(Cells(4, 5), Cells(derlig, 5)) = t
FIN:
Application.EnableEvents = True
MsgBox Format(Timer - deb, "0.000\ sec.")
End Sub