Ordinare le celle di Excel in base al colore
lunedì, 15 dicembre 2008
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
posted by Andrea Perotti @ 22.10 Permalink ,
3 Comments:
- At 16 dicembre 2008 07.52, Boh/ orientalia4all said...
-
come farete ora che chiuderà Como Social?
- At 11 gennaio 2009 02.20, said...
-
CIAO, STAVO LEGGENDO QUESTO POST MA NON HO CAPITO BENE COME FARE...DEVE ESSERE LA MIA IGNORANZA....
HO MESSO NELLA COLONNA A UNA NOME IN OGNI CELLA..... VORREI DARGLI UN COLORE A SECONDA DI QUELLO CHE MI PIACE DI PIU E FARE IN MODO CHE SI ORDINO PER COLORE...
HO PROVATO A SEGUIRE IL TUO STEP MA MI DA UN ERRORE....O NON SON CAPACE IO...
CMQ SE HA 2 MIN PER SPIEGARLO A PANI E PESCI.. MI FARESTI UN FAVORE... SENNO GRAZIE LO STESSO..
LORIS - At 11 gennaio 2009 12.44, Andrea Perotti said...
-
Loris come prima cosa devi inserire la funzione in Excel, seguendo la procedura descritta nel post.
Quindi devi inserire la funzione in una cella a fianco di quella colorata; la sintassi della funzione è descritta del post in cui A1 è il riferimento alla cella colorata. Quindi trascini la funzione in tutte le altre celle a fianco di quelle colorate. Otterrai così dei numeri, che rappresentano il colore presente nelle celle che ti interessano. A questo punto devi ordinare l'intera tabella in base alla colonna che contiene i numeri e otterrai che tutte le celle colorate sono ordinate. Infine puoi cancellare la colonna che contiene i numeri. Se invece usi Excel 2007 l'ordinamento in base ai colori è una funzione di default.





