Sumă după culoare - Exemple de cod VBA

Următoarea funcție calculează valoarea totală a tuturor celulelor dintr-un anumit interval care au o anumită culoare:

Din păcate, nu există o funcție SUMIF de sumat pe baza culorii celulei. Dacă doriți să rezumați după culoare, va trebui să creați o funcție în VBA.
Pentru a utiliza acest cod: Deschideți Editorul Visual Basic (Alt + F11), introduceți un nou modul (Inserați> Modul) și copiați și lipiți codul dorit în modul.

Funcția de a suma prin culoare

1234567891011121314151617181920 Funcția Color_By_Numbers (Color_Range As Range, Color_Index As Integer) Ca Double'Dim Color_By_Numbers ca dubluDim Cell'Se va uita la celulele care se află în interval și dacă„proprietatea interioară a culorii se potrivește cu culoarea celulei necesară'atunci va însuma„Gama Loop ThroughPentru fiecare celulă din gama Color_RangeDacă (Cell.Interior.ColorIndex = Color_Index) AtunciColor_By_Numbers = Color_By_Numbers + Cell.ValueEnd IfUrmătoarea celulăFuncția de sfârșit

Acesta este efectiv „sumă după culoare” - deci, dacă cunoașteți palatul 56 de culori Excel și știți, de exemplu, că culoarea 4 este verde deschis, atunci următorul apel:

Color_By_Numbers („A1: P20”, 4)

va însuma valorile pentru toate celulele din intervalul A1: P20 care sunt de culoare verde deschis.

Pentru a ușura utilizarea funcției, următorul subrutină va calcula valoarea totală pentru fiecare dintre cele 56 de culori Excel. De asemenea, oferă întregul gust, astfel încât să fie ușor de văzut numărul de index pentru fiecare culoare.

Subrutina este invocată în foaia 1 și privește intervalul

12345678910111213141516171819202122 Private Sub CommandButton1_Click ()'Se va uita la fiecare culoare și va produce un tabel sumar al valorilor'pe foaia 1 în celula A1 și în josAtenuați numărul_culoare_curent ca întregReduceți culoarea_Total ca dublăPentru Current_Color_Number = 1 până la 56Color_Total = Color_By_Numbers (Foi ("Sheet2"). Gama ("a11: aa64"), Current_Color_Number)Foi de lucru ("Sheet1"). Range ("A1"). Offset (Current_Color_Number, 0) = Current_Color_NumberFoi de lucru ("Sheet1"). Range ("A1"). Offset (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberDacă Color_Total 0 # AtunciFoi de lucru („Sheet1"). Range („a1"). Offset (Current_Color_Number, 1) .Value = Color_TotalEnd IfUrmătorul Număr_Culoare_CurentSfârșitul Sub

Pentru a descărca fișierul XLS, faceți clic aici

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave