Buona sera, Clemente;
propongo a Forum il Codice per l'ordinamento sviluppato con Excel 2013, per Excel 2000 e 2003 il Codice sarebbe sicuramente molto diverso, per Excel 2007 non saprei.
Option Explicit
Sub Ordina()
Dim NRc As Long
NRc = Range("A" & Rows.Count).End(xlUp).Row
Columns("B:K").Select
ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("C2:C" & NRc), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("D2:D" & NRc), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("I2:I" & NRc), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.ActiveSheet.Sort
.SetRange Range("B1:K" & NRc)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("C2").Select
End Sub
Questo Codice Ordina secondo queste tre regole:
1 Cognome
2 Nome
3 LETT.
Ora, se provi a lanciare questa procedura, ti accorgerai di una incongruenza; la sequenza:
Balletta Giovanni S. Maria P.zza Umberto I° Ristorazione .....Bar ..............A
Balletta Tancledo S. Maria Nazionale ............Cessata ..............Ristorante CE
Balletta Giovanni S. Maria Macello 26 ...........Ristorazione ....Ristorante .A
Non è corretta; questo è dovuto allo spazio finale del Cognome "Balletta " nel Record:
Balletta Giovanni S. Maria Macello 26 ...........Ristorazione ....Ristorante .A
Se togli lo spazio finale in "Balletta" e rilanci la produra, vedrai che il risultato sarà:
Balletta Giovanni S. Maria P.zza Umberto I° Ristorazione .....Bar ..............A
Balletta Giovanni S. Maria Macello 26 ...........Ristorazione ....Ristorante .A
Balletta Tancledo S. Maria Nazionale ............Cessata ..............Ristorante CE
come deve essere.
A disposizione.
Buona serata a Tutti.
Giuseppe