Te envié el archivo con la macro, lo que hice fue separar la columna para ordenar por separado las letras y los números. Si la columna de Exp, siempre tiene una letra y después números y si la columna de Box, siempre tiene 3 letras y después números, entonces no tendrás problemas, pero si eso cambia, debemos adecuar la macro.
Sub Macro1()
'Por.Dante Amor
Application.DisplayAlerts = False
Set h1 = Sheets("Resultado primer paso")
h1.Columns("C:C").TextToColumns Destination:=Range("C1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(3, 1)), TrailingMinusNumbers:=True
h1.Columns("C:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
h1.Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(1, 1)), TrailingMinusNumbers:=True
h1.Range("E1") = "Box2"
u = h1.Range("A" & Rows.Count).End(xlUp).Row
With h1.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("D2:D" & u), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("E2:E" & u), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("B2:B" & u), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("C2:C" & u), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("A2:A" & u), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("A1:E" & u)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
h1.Range("F1:F" & u) = "=CONCATENATE(RC[-2],RC[-1])"
h1.Columns("F:F").Copy
h1.Range("D1").PasteSpecial Paste:=xlPasteValues
Columns("E:F").Delete Shift:=xlToLeft
h1.Columns("D:D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
h1.Range("D1:D" & u) = "=CONCATENATE(RC[-2],RC[-1])"
h1.Columns("D:D").Copy
h1.Range("D1").PasteSpecial Paste:=xlPasteValues
Columns("B:C").Delete Shift:=xlToLeft
End Sub