Štetje zadetkov števil!
Štetje zadetkov števil!
Pozdravljeni!
Nekako se mučim z makrojem, ki bi mi znal prešteti določena števila, pa mi ne uspe.
PRIMER: Predstavljajte si, da imate v stolpcu v obsegu od B4 do B1000 (lahko tudi manjši ali večji obseg) različna števila in sicer samo od 1 do 99 (večjih ni). Ta števila so brez reda in isto število se lahko večkrat tudi ponovi npr. 4,19,58,6,19,19,7,99....... Sedaj bi pa jaz rad, da mi Excel prešteje (ne sešteje) vsa vpisana števila (in mi jih vpiše v celico D25), v celico D26 mi naj prešteje koliko števil je v rangu od 1 do 10, v celico D27 mi naj prešteje koliko je števil v rangu od 11 do 20, itd...
Hvala že vnaprej!
L.P.: Zoki
Nekako se mučim z makrojem, ki bi mi znal prešteti določena števila, pa mi ne uspe.
PRIMER: Predstavljajte si, da imate v stolpcu v obsegu od B4 do B1000 (lahko tudi manjši ali večji obseg) različna števila in sicer samo od 1 do 99 (večjih ni). Ta števila so brez reda in isto število se lahko večkrat tudi ponovi npr. 4,19,58,6,19,19,7,99....... Sedaj bi pa jaz rad, da mi Excel prešteje (ne sešteje) vsa vpisana števila (in mi jih vpiše v celico D25), v celico D26 mi naj prešteje koliko števil je v rangu od 1 do 10, v celico D27 mi naj prešteje koliko je števil v rangu od 11 do 20, itd...
Hvala že vnaprej!
L.P.: Zoki
Pozdravljen Zoki
Upam, da sem prav razumel.
Lp
Koda: Izberi vse
Sub Prestej_st()
'
Dim zadnja_vrstica, stevec_stevil, stevec_stevil_OD1DO10 As Integer
zadnja_vrstica = Range("B65536").End(xlUp).Row
stevec_stevil = 0
stevec_stevil_OD1DO10 = 0
For Each c In Range("B4:B" & zadnja_vrstica)
If IsNumeric(c.Value) = False Then GoTo Naprej
'prešteje vsa števila
If c.Value <> "" Then stevec_stevil = stevec_stevil + 1
'prešteje vsa števila od 1 - 10
If c.Value >= 1 And c.Value <= 10 Then stevec_stevil_OD1DO10 = stevec_stevil_OD1DO10 + 1
'...
Naprej:
Next
Range("D25").Value = stevec_stevil
Range("D26").Value = stevec_stevil_OD1DO10
'...
'
End Sub
Lp
Pozdravljeni,
Lahko si pomagate sami in še zelo preprosto je. Recimo, da v celici B3 piše "Števila", kar nama bo predstavljalo ime.
Lahko si pomagate sami in še zelo preprosto je. Recimo, da v celici B3 piše "Števila", kar nama bo predstavljalo ime.
- Postavite se sedaj v celico B4 in izberite Podatki/Poročilo vrtilne tabela ali vrtilnega grafikona.
- Odpre se čarovnik, ki ga lahko kar zaključite (ni se potrebno prebijati skozi tri korake).
- Čarovnik vam bo odprl nov list, kjer vam bo pripravil posebno tabelo in odprl se eno malo okno, kjer bodo zapisani vsi nasovi v vaši tabeli. Med njimi bo tudi najin 'Števila'.
- Zagrabite z miško ta naziv ('Števila') in ga nesite na levo stran pripravljene tabele (tam piše 'Tule spustite polja vrstice'). Zagrabite ga še enkrat in ga nesite na sredino tabele (tam piše 'Tule spustite podatkovne elemente')
- To je to. Excel vam je pripravil tabelo, kjer so zapisana vsa števila, ki jih je našel, ob njih pa piše kolikokrat se pojavijo.
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
POZDRAVLJENI!
Zelo dobro, sam sem še malo modificiral makro in to je to. Ste me pa že prehiteli z vrtilno tabelo oz. jaz sem imel v mislih graf, ki bi se mi izrisal v obliki kroga in procentih po posameznih zadetkih (stevec_stevil_OD1DO10) in skupnega števila.
Moja prošnja bi bila še samo, če mi lahko iz makroja zadnjo vpisano vrstico Excel poišče sam (ker ni vedno RANGE("B1000"), lahko je B356 itd.), potem pa npr. 5 vrstic pod zadnjim vnosom mi naj sam vpiše rezultate (kar imama sedaj v makroju Range("D25").Value = stevec_stevil).
Vem da sem že takšen makro videl v tem forumu, ampak ga sedaj ne najdem.
Hvala za trud in dober napotek!
L.P.: Zoki
Moja prošnja bi bila še samo, če mi lahko iz makroja zadnjo vpisano vrstico Excel poišče sam (ker ni vedno RANGE("B1000"), lahko je B356 itd.), potem pa npr. 5 vrstic pod zadnjim vnosom mi naj sam vpiše rezultate (kar imama sedaj v makroju Range("D25").Value = stevec_stevil).
Vem da sem že takšen makro videl v tem forumu, ampak ga sedaj ne najdem.
Hvala za trud in dober napotek!
L.P.: Zoki
Ponovno pozdrav
Lp
je že:...če mi lahko iz makroja zadnjo vpisano vrstico Excel poišče sam...
Koda: Izberi vse
zadnja_vrstica = Range("B65536").End(xlUp).Row
na koncu kode dodajte:...potem pa npr. 5 vrstic pod zadnjim vnosom mi naj sam vpiše rezultate (kar imama sedaj v makroju Range("D25").Value = stevec_stevil).
Koda: Izberi vse
Range("B" & zadnja_vrstica + 5).Value = stevec_stevil
POZDRAVLJENI!
Seveda, hvala, stvar "špila" kot v Nemčiji!
L.P.: Zoki
L.P.: Zoki
Še dodaten pogoj!
Sedaj bi si še pa želel, če bi lahko vstavil še dodaten pogoj pri štetju in sicer npr za vrstico:
If c.Value >= 1 And c.Value <= 10 Then stevec_stevil_OD1DO10 = stevec_stevil_OD1DO10 + 1
in če je ta pogoj izpolnjen, bi še pogledal dodaten pogoj, če je v stolpcu N vpisana vrednost 1 (potem naj sešteje npr.: stevec_stevil_OD1DO10_1), če pa je vpisana vrednost 2 pa naj sešteje npr.: stevec_stevil_OD1DO10_2.
Rad bi vedel predvsem, kako se dodajajo dodatni pogoji (če je prvi izpolnjen, kako preverjat drugega, tretjega, itd....)
Upam da je dovolj razumljivo in se Vam že vnaprej zahvaljujem!
L.P.: Zoki
If c.Value >= 1 And c.Value <= 10 Then stevec_stevil_OD1DO10 = stevec_stevil_OD1DO10 + 1
in če je ta pogoj izpolnjen, bi še pogledal dodaten pogoj, če je v stolpcu N vpisana vrednost 1 (potem naj sešteje npr.: stevec_stevil_OD1DO10_1), če pa je vpisana vrednost 2 pa naj sešteje npr.: stevec_stevil_OD1DO10_2.
Rad bi vedel predvsem, kako se dodajajo dodatni pogoji (če je prvi izpolnjen, kako preverjat drugega, tretjega, itd....)
Upam da je dovolj razumljivo in se Vam že vnaprej zahvaljujem!
L.P.: Zoki
Pojasnilo!
Mislim, da se res nisva dobro razumela. Če pogledava ta del makra:
For Each c In Range("B4:B" & zadnja_vrstica)
If IsNumeric(c.Value) = False Then GoTo Naprej
'prešteje vsa števila
If c.Value <> "" Then stevec_stevil = stevec_stevil + 1
'prešteje vsa števila od 1 - 10
If c.Value >= 1 And c.Value <= 10 Then stevec_stevil_OD1DO10 = stevec_stevil_OD1DO10 + 1
'...
Naprej:
...vidiva, da je vsak c v vrstici od B4 pa da zadnje izpolnjene vrstice. Jaz bi pa rad, da mi še, če je izpolnjen (če ni izpolnjen takrat ne) prvi pogoj If c.Value >= 1 And c.Value <= 10 Then .... pregleda še vrednost v tej isti vrstici v stolpcu N in sicer, če je vpisana vrednost 1 v stolpcu N mi naj sešteje "stevec_stevil_OD1DO10_1", če pa je vpisana vrednost 2, pa mi naj sešteje "stevec_stevil_OD1DO10_2"
Upam, da sem sedaj bil malo bolj razumljiv!
L.P.: Zoki
For Each c In Range("B4:B" & zadnja_vrstica)
If IsNumeric(c.Value) = False Then GoTo Naprej
'prešteje vsa števila
If c.Value <> "" Then stevec_stevil = stevec_stevil + 1
'prešteje vsa števila od 1 - 10
If c.Value >= 1 And c.Value <= 10 Then stevec_stevil_OD1DO10 = stevec_stevil_OD1DO10 + 1
'...
Naprej:
...vidiva, da je vsak c v vrstici od B4 pa da zadnje izpolnjene vrstice. Jaz bi pa rad, da mi še, če je izpolnjen (če ni izpolnjen takrat ne) prvi pogoj If c.Value >= 1 And c.Value <= 10 Then .... pregleda še vrednost v tej isti vrstici v stolpcu N in sicer, če je vpisana vrednost 1 v stolpcu N mi naj sešteje "stevec_stevil_OD1DO10_1", če pa je vpisana vrednost 2, pa mi naj sešteje "stevec_stevil_OD1DO10_2"
Upam, da sem sedaj bil malo bolj razumljiv!
L.P.: Zoki
Koda: Izberi vse
Sub Prestej_st()
'
Dim zadnja_vrstica, stevec_stevil, stevec_stevil_OD1DO10_1, stevec_stevil_OD1DO10_2 As Integer
zadnja_vrstica = Range("B65536").End(xlUp).Row
stevec_stevil = 0
stevec_stevil_OD1DO10_1 = 0
stevec_stevil_OD1DO10_2 = 0
For Each c In Range("B4:B" & zadnja_vrstica)
If IsNumeric(c.Value) = False Then GoTo Naprej
'prešteje vsa števila
If c.Value <> "" Then stevec_stevil = stevec_stevil + 1
'prešteje vsa števila od 1 - 10
If c.Value >= 1 And c.Value <= 10 And c.Offset(0, 12).Value = 1 Then stevec_stevil_OD1DO10_1 = stevec_stevil_OD1DO10_1 + 1
If c.Value >= 1 And c.Value <= 10 And c.Offset(0, 12).Value = 2 Then stevec_stevil_OD1DO10_2 = stevec_stevil_OD1DO10_1 + 1
'...
Naprej:
Next
Range("D25").Value = stevec_stevil
Range("D26").Value = stevec_stevil_OD1DO10_1
Range("D27").Value = stevec_stevil_OD1DO10_2
'...
'
End Sub
POZDRAVLJENI!
E, to je tisto, kar mi je manjkalo. Vsa čarovnija je v ukazu Offset, ki ga pa jaz nisem poznal. Ali je morda kje na internetu kakšna dobra razlaga tega ukaza in ostalih podobnih ukazov za VBA? Sicer pa saj veste, kaj pravi stari kitajski pregovor:"Ne daj mi ribe, temveč me nauči loviti".
Hvala za pomoč in trud,
Zoki
Hvala za pomoč in trud,
Zoki