Štetje obarvanih celic
Štetje obarvanih celic
Zdravo
Imam neko tabelo v kateri z makrom obarvam določene celice. Želim, da se na dnu vsake kolone izpiše število obarvanih celic v njej. Ali obstaja rešitev s formulo npr: [if((kolona=barva);seštej;0)]?
lp
Imam neko tabelo v kateri z makrom obarvam določene celice. Želim, da se na dnu vsake kolone izpiše število obarvanih celic v njej. Ali obstaja rešitev s formulo npr: [if((kolona=barva);seštej;0)]?
lp
Našel sem tri podobne teme. Vendar VB ne obvladam dovolj, da bi si lahko pomagal. Pač pa sem nekoliko pismen v B.Pascalu. Rešitev sem si zamislil nekako v stilu :
Function
...
var
kolona: array....
vrstica: array....
...
Begin
for vrstica= 10 to 16 do
for kolona=10 to 30 do
if [v celici je barva] then
writeln('obarvanih je: ' stevec);
next
stevec:=0;
next
...
End.
Funkcijo bi vkomponiral kar v makro!?
lepo prosim za pomoč. Bi šlo?
lp Brane
Function
...
var
kolona: array....
vrstica: array....
...
Begin
for vrstica= 10 to 16 do
for kolona=10 to 30 do
if [v celici je barva] then
writeln('obarvanih je: ' stevec);
next
stevec:=0;
next
...
End.
Funkcijo bi vkomponiral kar v makro!?
lepo prosim za pomoč. Bi šlo?
lp Brane
Spodaj imate napisano funkcijo, ki vam na poljubnem območju prešteje vse celice, ki so obarvane z neko barvo:
Funkcijo uporabite preprosto tako, da v neko celico vpišete:
Gornja koda vam prešteje vse koliko celic na območju A1:A300 je obarvanih z barvo 46.
Barve morate podajati v obliki številk, ker drugače pač ne more biti. V formuli ne morete pobarvati parametra
. Številko barve najlažje ugotovite tako, da okno Immediate vpišete:
Koda: Izberi vse
Option Explicit
'
' www.matjazev.net
'
' marec 2009
'
Public Function StejObarvane(Obmocje As Range, barva As Integer)
Dim celica, stevec
stevec = 0
For Each celica In Obmocje.Cells
If (celica.Interior.ColorIndex = barva) Then stevec = stevec + 1
Next
StejObarvane = stevec
End Function
Koda: Izberi vse
=StejObarvane(A1:A300;46)
Barve morate podajati v obliki številk, ker drugače pač ne more biti. V formuli ne morete pobarvati parametra
Koda: Izberi vse
print activecell.Interior.ColorIndex
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Če lahko malo pomagam...
Označite celico katere barva ozadja vas zanima in nato v okno IMMEDIATE v VBA okolju skopirajte
To je vse!
Če okna IMMEDIATE ne vidite, potem klik na MENU -> Wiew: Immediate Window
Označite celico katere barva ozadja vas zanima in nato v okno IMMEDIATE v VBA okolju skopirajte
->Enter in napisal se vam bo Index barve ozadjaprint activecell.Interior.ColorIndex
To je vse!
Če okna IMMEDIATE ne vidite, potem klik na MENU -> Wiew: Immediate Window
lp,
cedra
cedra
Ups, še nekaj.
To pa je trši oreh. Vsaj zame. Ubadam se cel dan in ne gre...in ne gre.
Zgoraj je opisana funkcija s katero na dnu vsake kolone v neki tabeli štejem obarvane celice. V vsako celico, kjer se izpisuje število obarvanih (zelenih) celic sem skopiral formulo:
=StejObarvane(območje;4).
Ker se podatki spreminjajo, z makrom
{ Razveljavi } počistim celice. Žal pa počistim tudi formulo in zadeva ne deluje več! makro:
Sub Razveljavi
For Each cell In Range ("E36:E42")
cell.Value = ""
Next cell
End sub
Če bi se lahko izpisovalo avtomatsko in sproti...
lp Brane
To pa je trši oreh. Vsaj zame. Ubadam se cel dan in ne gre...in ne gre.
Zgoraj je opisana funkcija s katero na dnu vsake kolone v neki tabeli štejem obarvane celice. V vsako celico, kjer se izpisuje število obarvanih (zelenih) celic sem skopiral formulo:
=StejObarvane(območje;4).
Ker se podatki spreminjajo, z makrom
{ Razveljavi } počistim celice. Žal pa počistim tudi formulo in zadeva ne deluje več! makro:
Sub Razveljavi
For Each cell In Range ("E36:E42")
cell.Value = ""
Next cell
End sub
Če bi se lahko izpisovalo avtomatsko in sproti...
lp Brane
Zdravo,
tako sem zakompliciral, da še meni ni čisto jasno. Na kratko:
s formulo: =StejObarvane(e36:e42;4)
kličem funkcijo, ki šteje obarvane (zelene) celice v koloni.
A glej zlomka. Vsakič, ko se število obarvanih celic spremeni, moram formulo vpisati na novo, sicer ostane prejšnji rezulat!
Kaj storiti, da bo delalo sproti ?
Ali lahko funkcijo z opisano formulo kličem iz makra?
Upam, da je moj problem bolje objasnjen.
lp Brane
tako sem zakompliciral, da še meni ni čisto jasno. Na kratko:
s formulo: =StejObarvane(e36:e42;4)
kličem funkcijo, ki šteje obarvane (zelene) celice v koloni.
A glej zlomka. Vsakič, ko se število obarvanih celic spremeni, moram formulo vpisati na novo, sicer ostane prejšnji rezulat!
Kaj storiti, da bo delalo sproti ?
Ali lahko funkcijo z opisano formulo kličem iz makra?
Upam, da je moj problem bolje objasnjen.
lp Brane
Tukaj imate makro za osvežitev formule npr. v celici "F13"
Makro predvideva, da imate formulo v celici "F13" in da imate funkcijo "StejObarvane", shranjeno v PERSONAL.XLS...Če temu ni tako, ustrezno popravite. Makro že upošteva, da se formula nanaša na celice "E36:E42" in da iščete ColorIndex4. Nato pa na pravo mesto, kam pa boste morali ugotoviti sami, v vašem makru napišete samo "Osvezi_formulo", seveda brez narekovajev. In zdaj bi moralo to "špilat" 
Makro sem enostavno samo posnel. Bo zdaj šlo?
Koda: Izberi vse
Sub Osvezi_formulo()
Range("F13").FormulaR1C1 = _
"=PERSONAL.XLS!StejObarvane(R[23]C[-1]:R[29]C[-1],4)"
End Sub
Makro sem enostavno samo posnel. Bo zdaj šlo?
lp,
cedra
cedra