Excel ti consente di ordinare i dati nei tuoi fogli di lavoro in base a un numero qualsiasi di attributi. Una delle cose in base alle quali non è possibile ordinare intrinsecamente, tuttavia, è il colore delle celle, almeno non senza l’aggiornamento a Excel 2007 o versioni successive. Per alcune applicazioni questa potrebbe essere una funzionalità molto utile.

La seguente macro, SortByColor, ordinerà una tabella in base al colore con cui è formattata una cella.

Sub SortByColor()

On Error GoTo SortByColor_Err

Dim sRangeAddress As String     Dim sStartCell As String     Dim sEndCell As String     Dim rngSort As Range     Dim rng As Range

Application.ScreenUpdating = False

sStartCell = InputBox("Enter the cell address of the " & _       "top cell in the range to be sorted by color" & _       Chr(13) & "i.e.  'A1'", "Enter Cell Address")



If sStartCell > "" Then         sEndCell = Range(sStartCell).End(xlDown).Address         Range(sStartCell).EntireColumn.Insert         Set rngSort = Range(sStartCell, sEndCell)

For Each rng In rngSort             rng.Value = rng.Offset(0, 1).Interior.ColorIndex         Next         Range(sStartCell).Sort Key1:=Range(sStartCell), _           Order1:=xlAscending, Header:=xlNo, _           Orientation:=xlTopToBottom         Range(sStartCell).EntireColumn.Delete     End If

SortByColor_Exit:

Application.ScreenUpdating = True     Set rngSort = Nothing     Exit Sub

SortByColor_Err:

MsgBox Err.Number & ": " & Err.Description, _       vbOKOnly, "SortByColor"

Resume SortByColor_Exit End Sub

La macro funziona chiedendoti prima la cella iniziale dell’intervallo che desideri ordinare. Questa dovrebbe essere la cella più in alto nell’intervallo. La macro quindi inserisce una colonna (solo temporaneamente) in cui è possibile memorizzare i valori dei colori. Quindi passa attraverso ogni cella nell’intervallo definito dalla cella iniziale specificata.

SortByColor presuppone che la tabella dati non abbia una riga di intestazione. In caso affermativo, è necessario modificare il comando di ordinamento effettivo. Cambia semplicemente Header: = xlNo in Header: = xlYes.

Si noti che la macro SortByColor ordinerà solo le celle in base al colore esplicito applicato alla cella, non ordinerà se il colore della cella è il risultato della formattazione condizionale.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (3122) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: