Przesunięty przez: Tajan 06-02-2007, 20:26 |
VBA Jak utworzyć licznik |
Autor |
Wiadomość |
bobol [Usunięty]
|
Wysłany: 06-02-2007, 16:50 VBA Jak utworzyć licznik
|
|
|
Witam wszystkich!
Według wartości komórek pierwszego arkusza z obszaru np. "a1:a100"
Przeszukujemy obszar drugiego arkusza np."b1:b1000"
I napotkaną (niepowtarzającą się wartość ) dodajemy LICZNIK +1
Próbowałem tak:
Kod: | Sub Licz1()
Dim Licznik
Dim KOMÓRKA As Range
Dim Zatrzymaj As Boolean
Zatrzymaj = True
For Each KOMÓRKA In Sheets("1li").Range("a1:a100").Cells
If KOMÓRKA.Value = Sheets("Linnie").Range.Array('????komórki od "b2 do b1000) Then
Licznik = Licznik + 1
Zatrzymaj = False
Exit For
End If
Next
MsgBox Licznik
End Sub
I oczywiście kit.
Utknąłem na tablicy (pojedyńczo działa)
Ma ktoś pomysł?
|
Uwaga moderatora. Proszę o umieszczanie postów w działach dostosowanych do tematyki postu. |
|
| ID posta:
2272
|
|
|
|
|
|
|
Rycho
Excel Expert
Pomógł: 203 razy Posty: 322
|
Wysłany: 06-02-2007, 18:36
|
|
|
Witaj.
Twoje makro może wyglądać tak:
Kod: | Sub Licz1()
Dim Licznik
Dim KOMÓRKA As Range, KOMÓRKA_2 As Range
Licznik = 0
For Each KOMÓRKA In Sheets("1li").Range("a1:a100")
For Each KOMÓRKA_2 In Sheets("Linnie").Range("b2:b1000")
If KOMÓRKA_2 = KOMÓRKA Then
Licznik = Licznik + 1
Exit For
End If
Next
Next
MsgBox Licznik
End Sub |
Aby sprawdzić, czy makro dobrze liczy, wstaw do jakiejś komórki formułę tablicową (zatwierdzaną klawiszem Enter podczas trzymania wciśniętych klawiszy Ctrl i Shift):
Kod: | =SUMA((LICZ.JEŻELI(Linnie!$B$1:$B$1000;'1li'!A1:A100)>0)*1) |
Pozdrawiam |
|
| ID posta:
2278
|
|
|
|
|
|
bobol [Usunięty]
|
Wysłany: 06-02-2007, 20:01
|
|
|
Witam ponownie
Niestety makro liczy o bardzo za dużo
a formuła wszystkie także te powtarzające się |
|
| ID posta:
2281
|
|
|
|
|
|
Tajan
Pomógł: 5573 razy Posty: 12088
|
Wysłany: 06-02-2007, 21:39
|
|
|
Nie bardzo rozumiem. Która wartość ma być niepowtarzalna? W arkuszu "1Li", czy "Linnie"? Jeżeli, w "Linnie", to byłoby to trochę bez sensu, bo wtedy zawsze byłoby 0 lub 1 dla danej wartości z "1Li". |
|
| ID posta:
2286
|
|
|
|
|
|
Rycho
Excel Expert
Pomógł: 203 razy Posty: 322
|
Wysłany: 06-02-2007, 21:46
|
|
|
Hej.
Być może nie zrozumialem problemu. Dla mnie on brzmi tak:
zlicz ile komórek z zakresu A1:A100 z arkusza '1li' ma conajmniej jeden odpowiednik w arkuszu 'Linnie' w zakresie B1:B1000
i to robi zarowno moje makro jak i formuła (tablicowa !!!).
Inna wersja formuły (nie tablicowej):
Kod: | =SUMA.ILOCZYNÓW((LICZ.JEŻELI(Linnie!$B$1:$B$1000;'1li'!A1:A100)>0)*1) |
i szybsza (bo wykorzystuje funcję arkusza LICZ.JEŻELI czyli COUNTIF ) wersja makra:
Kod: | Sub Licz2()
Dim Licznik
Dim KOMÓRKA As Range, KOMÓRKA_2 As Range
Dim rg As Range
Set rg = Worksheets("Linnie").Range("$B$1:$B$1000")
Licznik = 0
For Each KOMÓRKA In Sheets("1li").Range("a1:a100")
If WorksheetFunction.CountIf(rg, KOMÓRKA) > 0 Then
Licznik = Licznik + 1
End If
Next
MsgBox Licznik
End Sub |
Napisz, jeśli problem jest inny niż ja zrozumiałem.
Pozdrawiam |
|
| ID posta:
2289
|
|
|
|
|
|
bobol [Usunięty]
|
Wysłany: 07-02-2007, 02:32
|
|
|
Czołem
zlicz ile komórek z zakresu A1:A100 z arkusza '1li' ma conajmniej jeden odpowiednik w arkuszu 'Linnie' w zakresie B1:B1000
ma być
zlicz ile komórek z zakresu A1:A100 z arkusza '1linnie' ma conajmniej jeden i tylko jeden odpowiednik w arkuszu '1li' w zakresie B1:B1000 (jeśli jest więcej wystąpień któregoś z odpowiedników to je ignorujemy)
Licznik ma pokazać sumę takich wystąpień.
Pewnie nazwa licznik wprowadziła Cię w błąd.
Mea culpa. |
|
| ID posta:
2296
|
|
|
|
|
|
Rycho
Excel Expert
Pomógł: 203 razy Posty: 322
|
Wysłany: 07-02-2007, 13:47
|
|
|
Hej.
... i chesz powiedzieć, że nie czytałeś w pomocy na temat funkcji LICZ.JEŻELI ?
Funkcja ta zlicza wystąpienia określonej wartości w zadanym zakresie. Wartości unikalne to takie, które wystepują raz - funkcja zwróci 1. ( to chyba masło maślane :( ).
Popraw warunki w formule i w makro z '>0' na '=1'.
Pozdrawiam. |
|
| ID posta:
2298
|
|
|
|
|
|
bobol [Usunięty]
|
Wysłany: 07-02-2007, 16:01
|
|
|
Witam
Rychu, nie irytuj się proszę moją niewiedzą.
Nie jestem już młody i pewnie nic już się nie nauczę
(byłem już stary kiedy nastały pierwsze PC).
Myślę że nadal się nierozumiemy.
Twoje makro liczy tylko wtedy kiedy dany odpowiednik występuje tylko raz
natomiast kiedy występuje kilka razy nie liczy go wcale a ja chciałbym żeby
go policzył też jako "raz" ignorując następne wystąpienia. |
|
| ID posta:
2301
|
|
|
|
|
|
Rycho
Excel Expert
Pomógł: 203 razy Posty: 322
|
Wysłany: 07-02-2007, 19:14
|
|
|
Hej.
Cytat: | Rychu, nie irytuj się proszę moją niewiedzą.
Nie jestem już młody i pewnie nic już się nie nauczę
(byłem już stary kiedy nastały pierwsze PC). |
Nie irytuję się :) Witaj w klubie - na naukę nigdy nie jest za późno i mówie to z własnego doświadczenia. Nie chcę się licytować, ale znam conajmniej dwie osoby (w tym siebie) na tym forum, które pewnie są starsze od Ciebie.
W temacie:
Cytat: | Twoje makro liczy tylko wtedy kiedy dany odpowiednik występuje tylko raz
natomiast kiedy występuje kilka razy nie liczy go wcale a ja chciałbym żeby
go policzył też jako "raz" ignorując następne wystąpienia. |
Wg mnie tak właśnie liczyły pierwsze makra.
Może otrzymujesz inne wyniki niż oczekujesz z powodu 'nieprawidłowej' struktury danych np.
-wyszukjesz frgmentów tekstu lub tekst masz skopiowany z innego programu (może zawierać znaki sterujące lub inne niewidoczne lecz wpływające na wynik),
-wyszukujesz liczb, które są wynikiem obliczeń i tylko dzięki formatowaniu liczby wygladają na identyczne.
Sprawdź moje makro na małej liczbie danych wpisanych ręcznie 'od nowa'.
Pozdrawiam |
|
| ID posta:
2305
|
|
|
|
|
|
bobol [Usunięty]
|
Wysłany: 07-02-2007, 19:54
|
|
|
Przepraszam Cię Rychu za zamieszanie.
Oczywiście masz rację pierwsze makro działa prawidłowo
Tekst z kolumny "A" w arkuszu "Linnie" zachodził na kolumnę "B"(bo o nią faktycznie chodziło)
i nie widziałem pustych komórek excel niestety je widział i liczył .
No cóż wiek robi swoje.
Serdeczne dzięki. |
|
| ID posta:
2307
|
|
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona uĹźywa plikĂłw cookies.
Kliknij tutaj, Ĺźeby dowiedzieÄ siÄ jaki jest cel uĹźywania cookies oraz jak zmieniÄ ustawienia cookie w przeglďż˝darce.
KorzystajÄ
c ze strony uĹźytkownik wyraĹźa zgodÄ na uĹźywanie plikĂłw cookies, zgodnie z bieĹźÄ
cymi ustawieniami przeglÄ
darki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe
|