iskanje poatkov IF in AND
iskanje poatkov IF in AND
pozdravljeni
najprej opravičilo,če je moje vprašanje nerodno...
zanima me sledeč makro in tole so podatki:
nahajam se v stolpcu "c",v kateri koli celici.
recimo da sem v c3
...če je a3=pomlad in če je b3=marec,potem naj bo vrednost 10 v c3
...če je a3=pomlad in če je b3=april,potem naj bo vrednost 20 v c3
...če je a3=pomlad in če je b3=maj,potem jnaj bo vrednostt 30 v c3
....in tako naprej do konca,seveda bom napisal še več pogojev(okrog 25),
mesece in letne čase sem uporabi le za razumevanje.
vaše pomoči bom zelo vesel.
pomlad..... marec..... 10
pomlad..... april..... 20
pomlad..... maj..... 30
poletje..... junij..... 40
poletje..... junij..... 50
poletje..... avgust..... 60
jesen..... september..... 70
jesen..... oktober..... 80
jesen..... november..... 90
zima..... december..... 100
zima..... januar..... 110
zima..... februar..... 120
lp,rick
ps malo mi je žal "starega"izgleda spletne strani,tako sem se jo navadil...
no,ta je seveda bolj sodobna
najprej opravičilo,če je moje vprašanje nerodno...
zanima me sledeč makro in tole so podatki:
nahajam se v stolpcu "c",v kateri koli celici.
recimo da sem v c3
...če je a3=pomlad in če je b3=marec,potem naj bo vrednost 10 v c3
...če je a3=pomlad in če je b3=april,potem naj bo vrednost 20 v c3
...če je a3=pomlad in če je b3=maj,potem jnaj bo vrednostt 30 v c3
....in tako naprej do konca,seveda bom napisal še več pogojev(okrog 25),
mesece in letne čase sem uporabi le za razumevanje.
vaše pomoči bom zelo vesel.
pomlad..... marec..... 10
pomlad..... april..... 20
pomlad..... maj..... 30
poletje..... junij..... 40
poletje..... junij..... 50
poletje..... avgust..... 60
jesen..... september..... 70
jesen..... oktober..... 80
jesen..... november..... 90
zima..... december..... 100
zima..... januar..... 110
zima..... februar..... 120
lp,rick
ps malo mi je žal "starega"izgleda spletne strani,tako sem se jo navadil...
no,ta je seveda bolj sodobna
Če jaz prav razumem vprašanje, ni potrebno poseči po VBA temveč le po funkcijah.
Koda: Izberi vse
=IF(AND($A1="pomlad";$B1="marec");ROW()*10;"")
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
Sva s kljuko hkrati odgovarjala in tudi jaz sem vam mislil svetovati navadne funkcije, toda ker pišete, da so pogoji lahko bolj kompleksni sem vam vmes zapisal še VBA funkcijo in makro:
To torej lahko uporabljate na dva načina. Ali se postavite v celico in napišete
ali pa se postavite v celico in izvedete makro MakroMeseci
Koda: Izberi vse
'
' www.matjazev.net
' junij 2009
'
Public Function FunkcijaMeseci()
Dim vrstica As Long
vrstica = ActiveCell.Row
DolociVrednost = ""
If ((Cells(vrstica, 1) = "pomlad") And (Cells(vrstica, 2) = "marec")) Then FunkcijaMeseci = 10
If ((Cells(vrstica, 1) = "pomlad") And (Cells(vrstica, 2) = "april")) Then FunkcijaMeseci = 20
If ((Cells(vrstica, 1) = "pomlad") And (Cells(vrstica, 2) = "maj")) Then FunkcijaMeseci = 30
' in tako dalje
End Function
Public Sub MakroMeseci()
ActiveCell = FunkcijaMeseci
End Sub
Koda: Izberi vse
=FunkcijaMeseci()
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
pozdravljen,
najprej hvala za makro,ki je brez dvoma uporaben,formula pa morda malo manj,ker je pač več pogojev,kot sem jih jaz prikazal.
vprašal bi tudi:
sedaj mi makro izračuna za vsako celico posebej v kolikor ga sprožim....
vsak dan imam veliko pogojev in bi blo smiselno,če bi lahko z enim klikom
vse celice preračunal naenkrat v stolpcu "c"(torej,samo tiste,ki še niso preračunane)in ne vsake posebej,kot sedaj,kar je zelo zamudno.
je morda tudi to izvedljivo?
za odgovor se iskreno zahvaljujem.
lp,rick
najprej hvala za makro,ki je brez dvoma uporaben,formula pa morda malo manj,ker je pač več pogojev,kot sem jih jaz prikazal.
vprašal bi tudi:
sedaj mi makro izračuna za vsako celico posebej v kolikor ga sprožim....
vsak dan imam veliko pogojev in bi blo smiselno,če bi lahko z enim klikom
vse celice preračunal naenkrat v stolpcu "c"(torej,samo tiste,ki še niso preračunane)in ne vsake posebej,kot sedaj,kar je zelo zamudno.
je morda tudi to izvedljivo?
za odgovor se iskreno zahvaljujem.
lp,rick
Če sedaj jaz prav razumem:
Koda: Izberi vse
Sub preracunajVse()
For i = 1 To 100
Range("C" & i) = FunkcijaMeseci
Next i
End Sub
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
pozdravljen,
hvala za namig,ki ga pa ne znam uporabiti.....oziroma ne vem,
če je ustrezen.
"Matjažev" makro,mi izračuna v vsaki celici posebej,
torej,v celicah stolpca "c"
moram opraviti recimo 30 izračunov,
se pravi,da se moram venomer pomikati navzdol
in pognati makro za izračun vsake celice posebej.vaš makro pa mi je naredil nekaj drugega(težko bi razložil),poleg tega je računal v stolpcu tudi tam,kjer levo v stolpcu "a" in "b" ni bilo podatkov.a bi se dalo še kaj
dodati?res bom vesel rešitve.
lp,rick
hvala za namig,ki ga pa ne znam uporabiti.....oziroma ne vem,
če je ustrezen.
"Matjažev" makro,mi izračuna v vsaki celici posebej,
torej,v celicah stolpca "c"
moram opraviti recimo 30 izračunov,
se pravi,da se moram venomer pomikati navzdol
in pognati makro za izračun vsake celice posebej.vaš makro pa mi je naredil nekaj drugega(težko bi razložil),poleg tega je računal v stolpcu tudi tam,kjer levo v stolpcu "a" in "b" ni bilo podatkov.a bi se dalo še kaj
dodati?res bom vesel rešitve.
lp,rick
Moj makro vam poenostavi pomikanje po celicah navzdol. Makro se zažene 100 krat (!!! sami lahko nastavite) in v celicah od C1 do C100 izvede makro, ki bi ga sicer vi mogli ročno.
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
pozdravljen kljuka
v stolpcu c mi vrže vrednosti 10,torej same desetke od c1 do c 100.
to je problem.
če imam tele podatkev celicah :
pomlad..... marec..... 10
pomlad..... april..... 20
pomlad..... maj..... 30
potem,mi mora vrniti vrednost 10 v c1
potem,mi mora vrniti vrednost 20 v c2
potem,mi mora vrniti vrednost 30 v c3
pri men se to ne zgodi....
v stolpcu c mi vrže vrednosti 10,torej same desetke od c1 do c 100.
to je problem.
če imam tele podatkev celicah :
pomlad..... marec..... 10
pomlad..... april..... 20
pomlad..... maj..... 30
potem,mi mora vrniti vrednost 10 v c1
potem,mi mora vrniti vrednost 20 v c2
potem,mi mora vrniti vrednost 30 v c3
pri men se to ne zgodi....
:) Ta je pa dobra. Formula in makro sta povsem enaka. Makro ne naredi nič drugega, kot pokliče kodo, ki jo sicer izvede funkcija...rick napisal/-a:najprej hvala za makro,ki je brez dvoma uporaben,formula pa morda malo manj,ker je pač več pogojev,kot sem jih jaz prikazal.
In ravno funkcija je namenjena natanko tem problemom, ki jih opisujete in rešujete nadalje s Kljuko... Lepo se postavite v celico C1 (ali kamorkoli pač) in vpišite
Koda: Izberi vse
=FunkcijaMeseci()
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
pozdravljeni
mogoče pa se res ne razumemo........
vse te formule in še več bi morale biti v eni celici
v vašem premeru mi izračuna le eno možnost.V celici "a1" ne bo vedno
"pomlad" in v celici "b1" bo morda "april"......
=IF(AND($A1="pomlad";$B1="marec");ROW()*10;""
=IF(AND($A1="pomlad";$B1="april");ROW()*20;"")
=IF(AND($A1="pomlad";$B1="maj);ROW()*30;"")
=IF(AND($A1="poletje";$B1="junij");ROW()*40;"")
.......itd,
no,kako bi vse te formule(in še več seveda) združil v eni sami celici??vaš makro to omogoča,vendar velja,kot ste ugotovili za izračun le ene celice.
za odgovor se zahvaljujem
ps
če potegnem formulo =FunkcijaMeseci() navzdol mi vrne vedno
enake vrednosti ,zanimivo,če pa preračunavam posamično,
pa stvar deluje odlično,toda zamudno.
lp,rick
to
mogoče pa se res ne razumemo........
vse te formule in še več bi morale biti v eni celici
v vašem premeru mi izračuna le eno možnost.V celici "a1" ne bo vedno
"pomlad" in v celici "b1" bo morda "april"......
=IF(AND($A1="pomlad";$B1="marec");ROW()*10;""
=IF(AND($A1="pomlad";$B1="april");ROW()*20;"")
=IF(AND($A1="pomlad";$B1="maj);ROW()*30;"")
=IF(AND($A1="poletje";$B1="junij");ROW()*40;"")
.......itd,
no,kako bi vse te formule(in še več seveda) združil v eni sami celici??vaš makro to omogoča,vendar velja,kot ste ugotovili za izračun le ene celice.
za odgovor se zahvaljujem
ps
če potegnem formulo =FunkcijaMeseci() navzdol mi vrne vedno
enake vrednosti ,zanimivo,če pa preračunavam posamično,
pa stvar deluje odlično,toda zamudno.
lp,rick
to
Aha, to povejte... Sem vam funkcijo napisal malce prehitro oz. je nisem preizkusil... Spodaj imate popravljeno funkcijo in popravljen makro, ki sedaj delujeta pravilno:
Sprememba je v načinu klica funkcije, saj ji morate podati območje, kjer se vhodne vrednosti nahajajo. Konkretno to pomeni, da morate v C3 npr. zapisati sledečo funkcijo:
To funkcijo pa lahko kopirate navzdol in bo delovala pravilno , kar pa se tiče formule pa sem se seveda skliceval na formulo (FunkcijaMeseci) in makro (MakroMeseci)!
Koda: Izberi vse
'
' www.matjazev.net
' junij 2009
'
Public Function FunkcijaMeseci(Obmocje As Range)
Dim vrstica As Long
FunkcijaMeseci = "<neznano>"
If ((Obmocje.Cells(1, 1) = "pomlad") And (Obmocje.Cells(1, 2) = "marec")) Then FunkcijaMeseci = 10
If ((Obmocje.Cells(1, 1) = "pomlad") And (Obmocje.Cells(1, 2) = "april")) Then FunkcijaMeseci = 20
If ((Obmocje.Cells(1, 1) = "pomlad") And (Obmocje.Cells(1, 2) = "maj")) Then FunkcijaMeseci = 30
' in tako dalje
End Function
Public Sub MakroMeseci()
ActiveCell = FunkcijaMeseci(Range(ActiveCell.Offset(0, -2), ActiveCell.Offset(0, -1)))
End Sub
Koda: Izberi vse
=funkcijameseci(a3:b3)
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator