Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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. :cry:
ID posta: 2296 Skopiuj do schowka
 
 
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 ? :shock:
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 :lol: niestety je widział i liczył .

No cóż wiek robi swoje.
Serdeczne dzięki.
ID posta: 2307 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

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