Latvia
09-08-2014, 21:06
ciao,
sto cercando una macro che mi permetta di contare quante celle di un determinato colore ci sono in un determinato intervallo di celle.
Ho guardato in internet e macro ce ne sono varie, ma nessuna mi piace (=è scomoda). Le due migliori che ho trovato sono queste:
Function CCC(SCells As Range, TCell As Range) 'Count Cell Color
'SCells e' l' area di celle contigue di cui si vuol verificare il colore
'TCell e' la cella di paragone
'USO: =CCC(SCells;TCell)
'esempio di formula: =CCC(A1:E1,$F$1)
'
Application.Volatile
TColor = TCell.Interior.ColorIndex
For Each Cella In SCells
If Cella.Interior.ColorIndex = TColor Then CCC = CCC + 1
Next Cella
End Function
Function CountCcolor(range_data As range, criteria As range) As Long
Dim datax As range
Dim xcolor As Long
xcolor = criteria.Interior.ColorIndex
For Each datax In range_data
If datax.Interior.ColorIndex = xcolor Then
CountCcolor = CountCcolor + 1
End If
Next datax
End Function
In entrambe i due valori sono dati dall'intervallo e da una casella ''campione''.
- Nel primo
PRO: cliccando f9 si aggiorna
CONTRO: alla casella campione bisogna aggiungere $$
- Nel secondo
PRO: è sufficiente indicare la cella campione
CONTRO: non si aggiorna (manca evidentemente la seconda parte Application.Volatile)
Io vorrei o sistemare la prima, o completare la seconda, ma siccome di VBA non ci capisco nulla, non ci riesco. Qualcuno mi risolve il problema? spiegandomi anche velocemente il perchè dei cambiamenti fatti...
Grazie!
sto cercando una macro che mi permetta di contare quante celle di un determinato colore ci sono in un determinato intervallo di celle.
Ho guardato in internet e macro ce ne sono varie, ma nessuna mi piace (=è scomoda). Le due migliori che ho trovato sono queste:
Function CCC(SCells As Range, TCell As Range) 'Count Cell Color
'SCells e' l' area di celle contigue di cui si vuol verificare il colore
'TCell e' la cella di paragone
'USO: =CCC(SCells;TCell)
'esempio di formula: =CCC(A1:E1,$F$1)
'
Application.Volatile
TColor = TCell.Interior.ColorIndex
For Each Cella In SCells
If Cella.Interior.ColorIndex = TColor Then CCC = CCC + 1
Next Cella
End Function
Function CountCcolor(range_data As range, criteria As range) As Long
Dim datax As range
Dim xcolor As Long
xcolor = criteria.Interior.ColorIndex
For Each datax In range_data
If datax.Interior.ColorIndex = xcolor Then
CountCcolor = CountCcolor + 1
End If
Next datax
End Function
In entrambe i due valori sono dati dall'intervallo e da una casella ''campione''.
- Nel primo
PRO: cliccando f9 si aggiorna
CONTRO: alla casella campione bisogna aggiungere $$
- Nel secondo
PRO: è sufficiente indicare la cella campione
CONTRO: non si aggiorna (manca evidentemente la seconda parte Application.Volatile)
Io vorrei o sistemare la prima, o completare la seconda, ma siccome di VBA non ci capisco nulla, non ci riesco. Qualcuno mi risolve il problema? spiegandomi anche velocemente il perchè dei cambiamenti fatti...
Grazie!