Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

makro VBO EXCEL wyszukiwanie nazwisk w kolumnie

jan23 13 Lis 2015 14:12 747 5
  • #1 13 Lis 2015 14:12
    jan23
    Poziom 9  

    Witam
    Mam takie makro.
    W kolumnie A w arkuszu są wpisane nazwiska .
    1-Zadaniem makra jest wyszukanie wszystkich takich samych nazwisk i wyświetlenie ich .
    2-jeśli jest pusty wiersz w kolumnie ; to ma przejść do następnego z nazwiskiem
    3- jeśli są trzy kolejne puste komórki to makro ma się zakończyć
    Teraz makro szuka, ale zatrzymuje się jak jest puste pole w tabeli.


    Sub szukaj_nazwisk()
    'Deklaracja zmiennych
    Dim komórka As Range
    Dim szukaj As String
    'Podstawienie pod zmienną szukaj nazwiska do odnalezienia
    'LCase - zamiana na małe znaki, Trim - usuwa spacje
    szukaj = Trim(LCase(InputBox("Podaj nazwisko do wyszukania")))
    Set komórka = Range("A2")
    'Początek pętli powtarzaj
    Do
    'Przeskok o jedną komórkę w dół
    Set komórka = komórka.Offset(1, 0)
    'Sprawdzanie waruku zakończenia pętli
    Loop Until (Trim(LCase(komórka.Value))) = szukaj Or (komórka.Value = "") + (komórka.Value = "")


    'Sprawdzenie jaki został spełniony warunek zakończenia pętli

    If Trim(LCase(komórka.Value) = szukaj) Then
    'Wyświetlenie w oknie szukanych danych
    MsgBox ("nazwisko: " + UCase(szukaj) + Chr(10) + "imię: " + komórka.Offset(0, 1) + Chr(10) + "miasto: " + komórka.Offset(0, 4))


    Else
    MsgBox ("Takiej osoby nie ma na liście")

    End If
    'Set komórka = komórka.Offset(1, 0)
    Do
    'Przeskok o jedną komórkę w dół
    Set komórka = komórka.Offset(1, 0)
    'Sprawdzanie waruku zakończenia II pętli
    Loop Until (Trim(LCase(komórka.Value))) = szukaj Or (komórka.Value = "") + (komórka.Value = "")

    'Sprawdzenie jaki został spełniony warunek zakończenia pętli
    If Trim(LCase(komórka.Value) = szukaj) Then
    'Wyświetlenie w oknie szukanych danych
    MsgBox ("nazwisko: " + UCase(szukaj) + Chr(10) + "imię: " + komórka.Offset(0, 1) + Chr(10) + "miasto: " + komórka.Offset(0, 4))
    'Else
    'MsgBox ("Takiej osoby nie ma ")
    End If

    End Sub

    a
    1-Nazwisko
    2-Nowak a
    3-Nowak b
    4
    5-Kowalski
    6-Abesck
    7-Kołyś
    8-
    9-Wyszko

  • #2 13 Lis 2015 18:15
    arekkrasnal
    Poziom 20  

    Witam
    A może policzyć ile wierszy zawiera lista i tyle przeszukać
    przykład:
    liniaMax = Cells(Rows.Count, 1).End(xlUp).Row ' ile linii zawiera plik do odczytu

  • #3 14 Lis 2015 13:04
    jan23
    Poziom 9  

    Dzięki za podpowiedź
    Mam pytanie jak przypisać wartość LinaMax dla (komórka.Value =)
    Tak żeby można było skończyć pętle

  • #4 14 Lis 2015 14:22
    PRL
    Poziom 33  

    Cytat:
    1-Zadaniem makra jest wyszukanie wszystkich takich samych nazwisk i wyświetlenie ich .


    100 Kowalskich ma się wyświetlić w MsgBox?
    Jeżeli nie jest to zadanie ze szkoły, to proponuję umieścić w arkuszu wynikowym powtarzające się nazwiska oraz ilość ich powtórzeń.

  • #5 14 Lis 2015 14:48
    arekkrasnal
    Poziom 20  

    LiniaMax to tylko zmienna dla For ile razy powtórzyć twoje makro.

 
Promocja -20%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
tme