In un post precedente avevo spiegato come contare celle colorate; immaginiamo ora di dover contare celle colorate in base al loro contenuto, ad esempio tutte le celle di colore rosso che contengono valori maggiori a 50. Vediamo come procedere:

Dovendo lavorare in ambiente VBA apriamo la relativa finestra.

In Excel XP o 2003
Menù Strumenti – Macro – Visual Basic Editor

In Excel 2007
Bottone di Office – Pulsante Opzioni di Excel – Impostazioni generali – Opzione Mostra scheda Sviluppo sulla barra multifunzione
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic

In Excel 2010
Scheda File – Opzioni – Personalizzazone barra multifunzione – Selezionare Sviluppo nella sezione Schede principali
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic

Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci – Modulo) quindi copiare il codice riportato qui sotto:

Function ContacoloreIF(CellColor As Range, Content As Double, CountRange As Range)
Application.Volatile
Dim ICol As Integer
Dim TCell As Range
ICol = CellColor.Interior.ColorIndex
For Each TCell In CountRange
If ICol = TCell.Interior.ColorIndex And TCell.Value > Content Then
ContacoloreIF = ContacoloreIF + 1
End If
Next TCell
End Function

Chiudere la finestra e ritornare in Excel. La funzione che deve essere inserita per contare le celle di un determinato colore in base ad una condizione è la seguente:

=ContacoloreIF(CellColor;Content;CountRange)

Immaginando di voler contare quante celle rosse in un determinato intervallo contengono un valore maggiore a 50, la formula dovrà essere così composta:

CellColor: è la cella che contiene il colore che si vuole usare come filtro (nell’esempio il rosso)

Content: il valore di riferimento (nell’esempio 50)

CountRange: l’intervallo che contiene le celle da analizzare

Nel caso in cui invece di prendere in considerazione tutte le celle che contengono un valore maggiore di un numero, volessimo prendere come riferimento tutte quelle che contengono un valore minore o uguale ad un numero dovremo cambiare il criterio di confronto nel codice nella relativa riga come evidenziato di seguito:

If ICol = TCell.Interior.ColorIndex And TCell.Value > Content Then

Sostituendo al > il criterio di confronto desiderato, ad esempio < o = ecc.

Come ho scritto anche nei commenti la funzione conta i numeri; per far si che conti ad esempio le celle che presentano un determinato testo si deve cambiare il codice, ovvero nella prima riga:

Function ContacoloreIF(CellColor As Range, Content As Double, CountRange As Range)

si deve cambiare la definizione di Content cioè si deve sostituire Double con String, ovvero:

Function ContacoloreIF(CellColor As Range, Content As String, CountRange As Range)

Si deve anche cambiare il codice della riga che contiene il criterio di confronto:

If ICol = TCell.Interior.ColorIndex And TCell.Value > Content Then

mettendo = al posto di > ovvero:

If ICol = TCell.Interior.ColorIndex And TCell.Value = Content Then

Infine quando si inserisce nella cella di Excel la funzione, per l’argomento Content si deve scrivere il testo che interessa venga contato tra virgolette.

Manuali Microsoft gratis
Festa nazionale Svizzera 2012

Informatics, ski racer, loves Finland, Norway, mountains, squash, photography, Drones and RC Helicopter – Snapchat: andrea.perotti

Translate »