Součet podle barvy - příklady kódu VBA

Následující funkce vypočítá celkovou hodnotu všech buněk v určitém rozsahu, které mají určitou barvu:

Bohužel neexistuje žádná funkce SUMIF pro součet podle barvy buňky. Pokud chcete sčítat podle barvy, budete muset vytvořit funkci v rámci VBA.
Chcete -li použít tento kód: Otevřete editor jazyka (Alt + F11), vložte nový modul (Vložit> Modul) a zkopírujte a vložte požadovaný kód do modulu.

Funkce pro součet podle barvy

1234567891011121314151617181920 Funkce Color_By_Numbers (Color_Range As Range, Color_Index As Integer) As Double'Dim Color_By_Numbers ztlumit na dvojnásobekDim Cell"Podívám se na buňky, které jsou v dosahu, a pokud."'vlastnost interiéru barvy odpovídá požadované barvě buňky'pak se to sečte„Smyčka přes dosahPro každou buňku v Color_RangeIf (Cell.Interior.ColorIndex = Color_Index) PakColor_By_Numbers = Color_By_Numbers + Cell.ValueKonec IfDalší buňkaKoncová funkce

To je ve skutečnosti „součet podle barvy“ - pokud tedy znáte 56 barevného patra v Excelu a víte například, že barva 4 je světle zelená, zadejte následující volání:

Color_By_Numbers („A1: P20“, 4)

sečte hodnoty pro všechny buňky v rozsahu A1: P20, které mají světle zelenou barvu.

Aby bylo používání funkce snazší, následující podprogram vypočítá celkovou hodnotu pro každou z 56 barev aplikace Excel. Poskytuje také celé patro, takže je snadné vidět indexové číslo pro každou barvu.

Podprogram je vyvolán na listu 1 a prohlíží rozsah

12345678910111213141516171819202122 Private Sub CommandButton1_Click ()"Prohlédne si každou barvu a vytvoří souhrnnou tabulku hodnot."'na listu 1 v buňce A1 a dolůDim Current_Color_Number jako celé čísloDim Color_Total as DoublePro Current_Color_Number = 1 až 56Color_Total = Color_By_Numbers (Listy ("List2"). Rozsah ("a11: aa64"), Current_Color_Number)Pracovní listy ("List1"). Rozsah ("A1"). Offset (Current_Color_Number, 0) = Current_Color_NumberPracovní listy („List1“). Rozsah („A1“). Offset (Aktuální_Color_Number, 0). Interiér.ColorIndex = Aktuální_Color_NčísloIf Color_Total 0# ThenPracovní listy ("List1"). Rozsah ("a1"). Ofset (Current_Color_Number, 1) .Value = Color_TotalKonec IfDalší Current_Color_NumberEnd Sub

Chcete -li stáhnout soubor XLS, klikněte sem

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave