Összeg szín szerint - VBA -kód példák

A következő függvény kiszámítja az adott színtartomány összes cellájának összértékét:

Sajnos nincs SUMIF függvény, amelyet a cella színe alapján összegezhetnénk. Ha szín szerint szeretne összegezni, létre kell hoznia egy függvényt a VBA -n belül.
A kód használata: Nyissa meg a Visual Basic Editor -t (Alt + F11), helyezzen be egy új modult (Insert> Module), és másolja be a kívánt kódot a modulba.

Funkció összeg szerint szín szerint

1234567891011121314151617181920 Funkció Színes_Számok (Színtartomány mint tartomány, Színes_index mint egész) Kettős'Halvány Színes_Számok DuplakéntDim Cell- Meg fogja nézni a tartományban lévő cellákat, és ha igen'a belső belső tulajdonság megfelel a kívánt cellaszínnek'akkor összegződik'Loop Through tartományA Color_Range minden cellájáhozHa (Cell.Interior.ColorIndex = Color_Index) AkkorColor_By_Numbers = Color_By_Numbers + Cell.ValueVége HaKövetkező cellaVége funkció

Ez valójában „összeg szín szerint” - tehát ha ismeri az Excel 56 színpalettáját, és tudja például, hogy a 4 -es szín világos zöld, akkor a következő hívás:

Színes_szám_számok („A1: P20”, 4)

összesíti az A1: P20 tartomány összes, világos zöld színű cellájának értékeit.

A funkció használatának megkönnyítése érdekében a következő alprogram meghatározza az Excel 56 színének összes értékét. Ezenkívül az egész palatte -t ​​megadja, így könnyen látható az egyes színek indexszáma.

Az alprogram meghívásra kerül az 1. lapon, és a tartományt nézi

12345678910111213141516171819202122 Privát alparancsButton1_Click ()- Megvizsgálja az egyes színeket, és összefoglaló értékrendet készít"az 1. lapon az A1 cellában és lefeléHalvány Aktuális_szín_szám mint egészHalvány szín_összesen kettősA Current_Color_Number = 1 és 56 közöttColor_Total = Color_By_Numbers (Táblázatok ("Sheet2"). Tartomány ("a11: aa64"), Current_Color_Number)Munkalapok ("Sheet1"). Tartomány ("A1"). Eltolás (Current_Color_Number, 0) = Current_Color_NumberMunkalapok ("Sheet1"). Tartomány ("A1"). Eltolás (Current_Color_Number, 0) .Interior.ColorIndex = Current_Color_NumberHa Color_Total 0# AkkorMunkalapok ("Sheet1"). Tartomány ("a1"). Eltolás (Current_Color_Number, 1). Value = Color_TotalVége HaKövetkező Current_Color_NumberEnd Sub

Az XLS fájl letöltéséhez kattintson ide

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave