Makro v Excelu pro součet buněk dle jejich barvy


Potřeboval :) jsem sečíst buňky podle jejich barvy a jediný způsob, který mě napadl je filtrovat buňky dle barev a jako sumární vzorec použít funkci SUBTOTAL(9;A1:A5), kdy „9“ označuje typ součtu, v tomto případě SUM.

Anebo podívat se po nějakém šikovném makru ;)

Našel jsem následující makro, které jsem upravil, tak aby nebylo omezené pouze jednou barvou. Vlastní funkce je tvořena ze dvou VBA funkcí: pomocné InArray, která zjišťuje zda je prvek v poli (barva) a vlastní funkce SumColors pro součet.

Function SumColors(rColors As Range, rSumRange As Range)

rColors je oblast buněk, jejichž barva slouží k určení barev jež budou zahrnuty do součtu rSumRange je oblast buněk, které se sečítají

Při použití SumColors nesmíte zapomenout, že jí vkládáte jako vlastní funkce.

Teď jednoduchý příklad použití, myslím, že k obrázku není co dodat :)

A vlastní kód zmíněných funkcí:

náhled zdrojového kódu
'zjištění zda je položka obsažena v poli
Function InArray(item As Variant, iArray As Variant) As Boolean
 
 For Each iItem In iArray
  If iItem = item Then
   InArray = True
   Exit For
  End If
 Next iItem
 
End Function
 
'Součet buněk dle jejich barvy
Function SumColors(rColors As Range, rSumRange As Range)
 
Application.Volatile
 
Dim iColors() As Integer
Dim c As Integer
 
Dim rCell As Range
Dim vResult
 
Max = rColors.Count
ReDim iColors(1 To Max)
 
c = 0
For Each iCol In rColors
 c = c + 1
 iColors(c) = iCol.Interior.ColorIndex
Next iCol
 
For Each rCell In rSumRange
 If InArray(rCell.Interior.ColorIndex, iColors) Then
  vResult = WorksheetFunction.Sum(rCell) + vResult
 End If
Next rCell
 
SumColors = vResult
 
End Function

3 komentáře

el
před pěti lety
reagovat
Zdar, nevim proc a jak barvis bunky, ale ja bych si spis nekam vedle do bunky napsal typ (barvu), bunky barvil pomoci podmineneho formatovani a jednoduse bych scital pomoci SUMIF.
zmt
před pěti lety
reagovat
mam vychozi tabulku (kterou si stahuju) ve ktere jsou obarvene bunky a tabulka ma cca 500 radku a jenom par barev, nelze jednoduse fitrovat (protoze ma meziradky sloucene bunky), pak je tohle makro supr
Daniela
před pěti lety
reagovat
Vďaka, pomohlo mi to. \:\)

Přidejte komentář

Text komentáře musí být zadán, ostatní údaje nejsou povinné. HTML tagy nejsou povoleny.

Captcha picture.