Il Blog di Andrea Perotti



Sommare le celle in Excel in base alla formattazione

Immaginiamo di avere un intervallo di celle in Excel, B5:B20, e di voler sommare le celle di questo intervallo in base alla loro formattazione; ad esempio abbiamo bisogno di sommare tutte le celle che hanno il carattere o lo sfondo rosso e il testo in grassetto.

Prima di tutto si deve lavorare tramite codice VBA quindi 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

Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci - Modulo)
Copiare il codice riportato sotto:

Function FormatSum(rCriteriaCell As Range, rRange As Range)
Dim rcell As Range
Dim bMatch As Boolean
Dim vResult

For Each rcell In rRange
With rcell
bMatch = (rCriteriaCell.Interior.ColorIndex = _
.Interior.ColorIndex And _
rCriteriaCell.Font.ColorIndex = _
.Font.ColorIndex And _
rCriteriaCell.Font.Bold = _
.Font.Bold And _
rCriteriaCell.Font.Italic = _
.Font.Italic And _
rCriteriaCell.Font.Underline = .Font.Underline)
End With
If bMatch = True Then
vResult = WorksheetFunction.Sum(rcell) + vResult
End If
Next rcell

FormatSum = vResult
End Function

Chiudere la finestra e ritornare in Excel. La funzione che deve essere inserita per sommare le celle secondo il loro formato è la seguente:

=FormatSum(Formato;Intervallo)

In cui:
Formato: La cella contenente il formato di riferimento
Intervallo: Le effettive celle da sommare

Esempio:
=FormatSum($B$5;B5:B20)
Somma, nell'intervallo B5:B20, tutte le celle che hanno il formato presente nella cella B20 (esempio testo o sfrondo rosso in grassetto).

Nel nostro esempio la cella del formato può essere qualsiasi cella, contenente qualsiasi formato.

P.S.
Se nella cella di riferimento viene modificato il formato, l'aggiornamento del risultato della somma non è automatico; il cambiamento di un dato nelle celle dell'intervallo da sommare farà si che il risultato venga ricalcolato.

Invece il metodo più veloce per far si che la somma si aggiorni automaticamente quando cambiate il formato delle celle nell'intervallo, è quello di applicare il formato nelle celle che dovranno essere aggiunte alla somma copiandolo da una cella già formattata utilizzando il pulsante Copia Formato presente sulla barra degli strumenti di Formattazione.

Etichette: , ,

posted by Andrea Perotti @ 00.10 Permalink ,

5 Comments:

At 11 maggio 2009 15.00, Blogger Al.Fa. said...

Ciao
ho provato il tuo metodo, perchè mi serviva esattamente questa cosa...

ma non funziona, sai spiegarmi perchè ?
grazie

 
At 11 maggio 2009 15.03, Blogger Al.Fa. said...

Ciao,
in un elenco ho barrato alcune celle.
vorrei eliminare queste celle dalla somma, ma tramite il tuo codice vb non riesco a fargliele riconoscere.
un aiuto ?

grazie ancora.

 
At 11 maggio 2009 15.04, Blogger Al.Fa. said...

p.s. barrato = formato celle, carattere, barrato...

 
At 24 maggio 2009 17.32, Blogger Andrea Perotti said...

@Al.Fa. l'effetto barrato non è riconosciuto in questa funzione, per questo non funziona.

 
At 27 agosto 2009 11.57, Anonymous Anonimo said...

Grazie mille!!! E' perfetto!

 

Posta un commento

<< Home