Somma per colore - Esempi di codice VBA

La seguente funzione calcola il valore totale di tutte le celle in un particolare intervallo che sono di un particolare colore:

Sfortunatamente, non esiste una funzione SOMMA.SE da sommare in base al colore della cella. Se vuoi sommare per colore, dovrai creare una funzione all'interno di VBA.
Per utilizzare questo codice: apri l'editor di Visual Basic (Alt + F11), inserisci un nuovo modulo (Inserisci > Modulo) e copia e incolla il codice desiderato nel modulo.

Funzione da sommare per colore

1234567891011121314151617181920 Funzione Color_By_Numbers (Color_Range As Range, Color_Index As Integer) As Double'Dim Color_By_Numbers As DoubleDim Cell'Guarderà le celle che si trovano nell'intervallo e se'la proprietà color interior corrisponde al colore della cella richiesto'allora sommerà"Intervallo loop through"Per ogni cella in Color_RangeIf (Cell.Interior.ColorIndex = Color_Index) ThenColor_By_Numbers = Color_By_Numbers + Cell.ValueFinisci seCella successivaFine funzione

Questo è in effetti "somma per colore" - quindi se conosci la tavolozza dei 56 colori di Excel e sai ad esempio che il colore 4 è verde chiaro, allora la seguente chiamata:

Color_By_Numbers(“A1:P20”,4)

sommerà i valori per tutte le celle nell'intervallo A1: P20 che sono di colore verde chiaro.

Per rendere più semplice l'utilizzo della funzione, la seguente subroutine elaborerà il valore totale per ciascuno dei 56 colori di Excel. Fornisce anche l'intero palato in modo che sia facile vedere il numero di indice per ogni colore.

La subroutine viene invocata sul foglio 1 e guarda l'intervallo

12345678910111213141516171819202122 Sub CommandButton1_Click privato ()'Guarderà ogni colore e produrrà una tabella riassuntiva dei valori"sul foglio 1 nella cella A1 e verso il basso"Dim Current_Color_Number As IntegerDim Color_Total As DoublePer Current_Color_Number = da 1 a 56Color_Total = Color_By_Numbers(Sheets("Sheet2").Range("a11:aa64"), Current_Color_Number)Fogli di lavoro ("Foglio1"). Intervallo ("A1"). Offset (Numero_colore_corrente, 0) = Numero_colore_correnteFogli di lavoro("Foglio1").Intervallo("A1").Offset(Current_Color_Number, 0).Interior.ColorIndex = Current_Color_NumberSe Color_Total 0# AlloraFogli di lavoro("Foglio1").Intervallo("a1").Offset(Current_Color_Number, 1).Value = Color_TotalFinisci seSuccessivo Numero_colore_correnteFine sottotitolo

Per scaricare il file XLS, fare clic qui

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave