Mastodon

Immaginiamo di voler filtrare un elenco in Excel in base al colore dello sfondo o al colore del testo delle celle; in Excel 2007 – 2010 – 2013 questa funzionalità è disponibile di default tramite il pulsante Ordina e Filtra nel gruppo Modifica della scheda Home, selezionando il filtro automatico.

In Excel 2003 e precedenti il filtro 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 nuova colonna a fianco delle celle colorate una formula che restituisca il numero corrispondente ad ogni colore, ossia l’indice del colore; si filtrerà quindi la tabella in base alla colonna contenente i numeri corrispondenti ai colori, ottenendo quindi un filtro 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 filtrare.

A questo punto in questa nuova colonna saranno visualizzati i numeri corrispondenti ai colori presenti nelle celle di riferimento; basterà filtrare la tabella in base a questa colonna per aver ottenuto un filtro basato sui colori delle celle!

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.

Aggiornamento a Windows 8 o Windows Server 2012
Come recuperare documenti Word, Excel e PowerPoint corrotti o danneggiati
Translate »