Immaginiamo di voler ordinare un elenco in Excel in base al colore dello sfondo o al colore del testo delle celle; in Excel 2007 questa funzionalità è disponibile di default tramite il pulsante Ordina e Filtra nel gruppo Modifica della scheda Home, selezionando il filtro automatico o l’ordinamento personalizzato.
In Excel 2003 e precedenti l’ordinamento secondo le celle colorate non è presente, si dovrà quindi aggiungere una funzione personalizzata che permetta questa operazione.
Il concetto che seguiremo per ottenere il risultato voluto è quello di inserire in una colonna a fianco delle celle colorate una formula che restituisca il numero corrispondente ad ogni colore, ossia l’indice del colore; si ordinerà quindi la tabella in base alla colonna contenente i numeri corrispondenti ai colori, ottenendo quindi un ordinamento basato sul colore delle celle.
Passiamo quindi alla creazione della funzione che restituisce il numero del colore presente nella cella:
Menù Strumenti – Macro – Visual Basic Editor
Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci – Modulo)
Copiare il codice riportato sotto relativo alla funzione desiderata:
Function ColorIndexOfCell(Rng As Range, _
Optional OfText As Boolean, _
Optional DefaultAsIndex As Boolean = True) As Integer
Dim C As Long
If OfText = True Then
C = Rng.Font.ColorIndex
Else
C = Rng.Interior.ColorIndex
End If
If (C < 0) And (DefaultAsIndex = True) Then
If OfText = True Then
C = GetBlack(Rng.Worksheet.Parent)
Else
C = GetWhite(Rng.Worksheet.Parent)
End If
End If
ColorIndexOfCell = C
End Function
Function GetWhite(WB As Workbook) As Long
Dim Ndx As Long
For Ndx = 1 To 56
If WB.Colors(Ndx) = &HFFFFFF Then
GetWhite = Ndx
Exit Function
End If
Next Ndx
GetWhite = 0
End Function
Function GetBlack(WB As Workbook) As Long
Dim Ndx As Long
For Ndx = 1 To 56
If WB.Colors(Ndx) = 0& Then
GetBlack = Ndx
Exit Function
End If
Next Ndx
GetBlack = 0
End Function
Quindi in una nuova colonna inserire la seguente formula:
Nel caso si cosideri il colore dello sfondo della cella
=ColorIndexOfCell(A1;FALSO;VERO)
Nel caso si cosideri il colore del carattere della cella
=ColorIndexOfCell(A1;VERO;VERO)
La cella A1 rappresenta la cella colorata che si desidera ordinare .
A questo punto in questa nuova colonna saranno visualizzati i numeri corrispondenti ai colori presenti nelle celle di riferimento; basterà ordinare la tabella in base a questa colonna per aver ottenuto un ordinamento basato sui colori delle celle!
Se è necessario creare un ordinamento specifico, ossia che non segua la lista numerica crescente o decrescente, si dovrà impostare un elenco numerico personalizzato che segua l’ordine dei colori desiderati.
Per creare un elenco personalizzato:
Menù strumenti -> Opzioni -> Scheda Elenchi
Per definire un ordinamento in base all’elenco personalizzato:
Menù Dati -> Ordina -> Opzioni -> Prima chiave di ordinamento
Per rendere disponibile questa funzione in tutte le cartelle di Excel e non solo in quella in cui l’abbiamo inserita è possibile creare e attivare un componente aggiuntivo secondo queste istruzioni.
technorati tags: Microsoft, Excel, Ordinamento, Celle, Colorate
Informatics, ski racer, loves travels, Finland, Norway, mountains, squash, photography, Drones and RC Helicopter
Ciao!
Volevo chiederti una info: utilizzando excell si può ordinare una colonna in ordine alfabetico, ma MANTENENDO SEMPRE I COLORI DI SFONDO INVARIATI???
(io ho lo sfondo con 2 colori alternati. Ordinando la colonna, anche i colori di sfondo seguono l’ordinamento e si mischiano tutti. Posso ordinare la colonna e mantenere i colori uguali???) Grazie in anticipo.
@andrea: devi solo formattare la tua tabella non a mano ma tramite il comando Formatta come tabella che trovi nella scheda Home, gruppo Stili.
CIAO, HO DELLE CELLE NUMERATE ( 5 CELLE CONTENENETE NUMERI PER 200 RIGHE)…. VOLTA IN VOLTA LE FORMATTO CON RIEMPIMENTO COLORE….. COME POSSO ORDINARE LA RIGA (PARTENDO OVVIAMENTEDALLA PRIMA RIGA) IN BASE A QUELLA CONTENENTE PIU’ CELLE EVIDENZIATE E/O COLORATE . GRAZIE IN ANTICIPO