Zliczanie w Exelu


(system) #1

W zwiazku ze zostal zamkniety dzial OPROGRAMOWANIE pisze tu.........w Exelu mam kilka komorek jedna pod drugą i musze i w kazdej mam cyfry odzielone przecinkami, i mam pytanie czy jest jakas formula (jesli jest to jaka) ktora zlicza z tych komorek powiedzmy tylko 2-ki ilosc dwojek w tych komorkach......


(Utrivv) #2

W każdej komórce masz liczba i przecinek (np. 4,) czy kilka liczb z przecinkami (4, 5, 9, 11, 2)?

Ta formuła działa gdy w jednej komórce może być jedna dwójka.

=JEŻELI(CZY.LICZBA(SZUKAJ.TEKST(2;a2));E1+1;E1)

Ta formuła wymaga jednak by komórki zaczynały się od drugiego wiersza. Przykład zakłada że dane są w kolumnie A a formuła w kolumnie E

A tutaj prymitywne makro które zlicza dwójki

sub zlicz()

dim x as string

dim licznik as long

dim max as long

dim row as string

dim i as long

licznik = 0

row = 1


while cells(row,1).value <> ""


x=cells(row,1).value

max=len(x)

for i = 1 to max step 1

      if mid(x,i,1) = "2" then

      licznik = licznik + 1

      end i

next i

row = row +1

wend

cells(1,5) = "Wynik: " & licznik

end sub

(system) #3

Tak w komorce mam np. 1,4,5,3 cyfry......

Ja dałem formułe =JEŻELI(CZY.LICZBA(SZUKAJ.TEKST(1;A1));B6+1;B6) ale wyskakuje mi jakis komunikat ze to odwolanie cykliczne i nie chce mi zliczyc

1 - to chcialem zeby jedynki mi policzyl

A1 - zeby od tej komorki zaczał

B6+1;B6 - a to miejsce formuły czyli komórka B6

CZY COS ZLE ZROBILEM??


(Utrivv) #4

tę formułę musisz przeciągnąć w dół - jedna formuła na jedną komórkę dlatego b6 musisz zmienić na b1

b1=1;b1

Formuła zlicza tylko pierwszą jedynkę.

Mozna oczywiście zapętlić te formułę ale przyznaję że kiedy próbowałem zrobic to "na szybko" straciłem rachubę nawiasów :slight_smile:

Lepiej użyć makro


(system) #5

Hmm pogubilem sie pokaze Ci printscan przykladu na ktorym dzialam.....

a potrzebuje zeby zliczał ta przykladowa 1-ke nawet jesli by byla 2 w kolejnosci....


(Utrivv) #6

Chodzi o to że formuła ze swej natury służy raczej prostym wyrażeniom.

Musiałbyś zapętlić tę procedurę którą podałem (zapętlenie musi następować w tym miejscu:

jeżeli (warunek;ZAPETLENIE;0)

czyli

string = a2

jeżeli 1 jest w stringu to

licznik = licznik + 1

string2 = prawy(string;dł(string)-szukaj.tekst(2;string))

jeżeli 1 jest w string2 to

licznik = licznik + 1

string3 = prawy(string2;dł(string2)-szukaj.tekst(2;string2))

jeżeli 1 jest w string 3 to

licznik = licznik +1

(...)

stringn1 = a3

jeżeli 1 jest w stringn1 to

(...)

ilość powtórzeń musi być z góry zadana bo w formułach nie można użyć pętli.

Czyli z góry musisz znać maksymalną ilość powtórzeń albo uznać że jest to np. n*1/2 dł(a2) (połowa ilości znaków we wszystkich komórkach)

Jak widać zadanie niezwykle skomplikowane i żmudne - łatwiej i prościej użyć mini procedurki którą masz wyżej.


(system) #7

Hmmm ta formuła i tak nie działała na tym przykladzie co w linku podesłałem zawsze "0" mialem....i mowiszze ta formula bedzie tylko sprawdzac pierwsza liczbe w tej komorce czy tak?


(Utrivv) #8

Formuła DZIAŁA ale mówiłem ci już że musisz ją zastosawać do każdej komórki osobno!

Jeżeli masz 10 komórek z danymi muisz mieć 10 komórek z formułą.

Zwróć uwagę że licznik odwołuje się do już policzonych wartości.


(system) #9

=JEŻELI(CZY.LICZBA(SZUKAJ.TEKST(2;A1));B6+1;EB)

Uzyłem tej formuły i w komorce A1umiesciłem cyfry odzielone przecinkiem 1,3,2,3,2 w komorce B6 komorke zrobilem gdzie ma zliczac formularz 2-ki w komorce i pokazuje mi wynik "0" u Mnie to nie gra.


(Utrivv) #10

Ciągle nie rozumiesz?

Nie =JEŻELI(CZY.LICZBA(SZUKAJ.TEKST(2;A1));B6+1;EB)

ale =JEŻELI(CZY.LICZBA(SZUKAJ.TEKST(2;A2));B1+1;B1) dla komórki a2

=JEŻELI(CZY.LICZBA(SZUKAJ.TEKST(2;A3));B2+1;B2) dla a3 itp


(system) #11

Hmm dla komorki w ktorej dalem 2,2 a szukał "2-ki" dal mi wynik 1 On zlicza pierwsza cyfre tylko chyba tak?


(Utrivv) #12

pierwszą występującą, pisałem już dlaczego.

Jeżeli ma zliczać także kolejne to musisz formułę zapętlić, pisałem ci jak.

Prawdopodobnie jakoś tak:

=JEŻELI(CZY.LICZBA(SZUKAJ.TEKST(2;A2));B1+1+JEŻELI(CZY.LICZBA(SZUKAJ.TEKST(2;lewy(a2;dł(a2)-szukaj.tekst(2;A2))));1;0);B1)

ta formuła (o ile nie pomyliłem się z nawiasami) powinna działać jeżeli 2 pojawia się co najwyżej 2 razy.


(system) #13

Wlasnie krzyczy ze z nawiasami jest nie tak cos

Mam formułe

=SUMA.JEŻELI(N7:N1757;"A,.";K7:K1757)

czyli sumuje mi Ona wartoosci z kolumny K dla kazdego A,. ........a jak Ją przerobić żeby sumowała komorki tez np. B,C,A czyli takie ktore zawierają tez "A".....

Witam w linku podalem prosty przyklad tego co chce uzyskac dodac ze rzeczywisty arkusz bedzie duzo wiekszy, mam 2 kolumny i musi mi zsumować wartości z kolumny B wedlug kolumny A ale tylko te komorki a co za tym idzie ich wartosci z kolumny B

Edit___

Proszę nie pisać posta pod postem! -jest przecież funkcja "Edytuj"

(adpawl)