salve
una macro potrebbe essere quella che segue:
La macro considera che i valori da ordinare siano nella colonna A e che le colonne B e C siano vuote perchè vengono utilizzate come appoggio dalla macro. Quindi per vedere il funzionamento prova a inserire in un foglio vuoto (Foglio1) i valori di prova
1 2 3 4 5 11 50 111 1A 1B 1C 2A 2B 2C 11A 11B da cella A1 in giù esegui la macro e vedi se il risultato è quello voluto.
Sub OrdinaNumeriLettere()
Dim Area As Range, AreaO As Range
Dim Cl As Range, i As Long, ABC As String, NR As String
With Sheets("foglio1")
Set Area = .Range("a1", .Range("a1").End(xlDown))
For Each Cl In Area
For i = 1 To Len(Cl)
If IsNumeric(Mid(Cl, i, 1)) Then
NR = NR & Mid(Cl, i, 1)
Else
ABC = ABC & Mid(Cl, i, 1)
End If
Next
Cl.Offset(0, 1).Value = NR
Cl.Offset(0, 2).Value = ABC
NR = ""
ABC = ""
Next
Set Area = Nothing
Set Area = .Range("B1", .Range("d1").End(xlDown))
Area.Sort Key1:=Range("B1"), Order1:=xlAscending
Set AreaO = .Range("B1", .Range("B1").End(xlDown))
For Each Cl In AreaO
If Cl.Offset(0, 1).Value <> "" Then
Cl.Offset(0, -1).Value = Cl.Value & Cl.Offset(0, 1).Value
Else
Cl.Offset(0, -1).Value = Cl.Value
End If
Next Cl
Area.ClearContents
Set Area = Nothing
Set AreaO = Nothing
End With
End Sub
saluti
Andrea