Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[excel][vba] kopiowanie wierszy

ScanSpeak 17 Jul 2011 21:28 4638 5
  • #1
    ScanSpeak
    Level 2  
    Witam.
    Sprawa pojawiała się już kilkukrotnie na forum elektrody. Szukałem rozwiązania również w innych serwisach. Zacząłem naukę VBA, ale nie zdążę opanować go na takim poziomie, aby rozwiązać ten bieżący problem.
    Sprawa dotyczy arkusza z kilkoma setkami rekordów. Podział wg kategorii w kolumnach i wiele wierszy z danymi. Interesują mnie wartości z dwóch wierszy- drugiego i czwartego. W kolejnym arkuszu mam określone kategorie, które występują właśnie w tych dwóch wierszach z pierwszego arkusza. Chciałbym użyć makra do wyszukania tych wierszy z pierwszego arkusza, gdzie występują wartości szukane w drugim arkuszu i przekopiowanie wszystkich tych wierszy do np. 3 arkusza.
    Podsumowując. Chciałbym wyszukać wiersz po wierszu pierwszy arkusz z zapytaniem czy w danym wierszu dla kolumny 2 i 4 występuje wartość szukana z arkusza 2, jeżeli tak to kopiowanie wiersza do arkusza trzeciego i dalsze szukanie w dół arkusza pierwszego, aż nie skończą się wszystkie wiersze z danymi.

    Proszę o pomoc.

    Pozdrawiam,
    ScanSpeak
  • #2
    powerm
    Level 23  
    Makro to strzelanie z armaty do komara, do jednorazowej operacji wystarczy użyć sposobu.
    Ja użyłbym funkcji wyszukaj.pionowo. Sprawdzałbym kolumny osobno wyszukując wartości w tej drugiej tabeli. Funkcja ta daje wartość n/d# jeśli nie znajdzie. Potem sprawdziłbym które wiersze nie mają w którejś z kolumn tej wartości. Ułożyłbym formułe =jeżeli(oraz(czy.brak(kkol1);czy.brak(kol2);prawda;fałsz). Potem sobie tylko przeklejam wszystkie wartości specjalnie - tylko wartosci. Sortuje po kolumnie wartosciami prawda, fałsz. Fałsz odrzucam a a te oznaczone prawda to jest twój wynik. Sprzątam w formularzu i idę zbierać pochwały.
  • #3
    ScanSpeak
    Level 2  
    powerm wrote:
    Makro to strzelanie z armaty do komara, do jednorazowej operacji wystarczy użyć sposobu.
    Ja użyłbym funkcji wyszukaj.pionowo. Sprawdzałbym kolumny osobno wyszukując wartości w tej drugiej tabeli. Funkcja ta daje wartość n/d# jeśli nie znajdzie. Potem sprawdziłbym które wiersze nie mają w którejś z kolumn tej wartości. Ułożyłbym formułe =jeżeli(oraz(czy.brak(kkol1);czy.brak(kol2);prawda;fałsz). Potem sobie tylko przeklejam wszystkie wartości specjalnie - tylko wartosci. Sortuje po kolumnie wartosciami prawda, fałsz. Fałsz odrzucam a a te oznaczone prawda to jest twój wynik. Sprzątam w formularzu i idę zbierać pochwały.


    Powerm zgodzę się z tobą o ile przyjmiemy, że to jednorazowa operacja. W tym wypadku mam jednak cykliczne operacje. Stąd ten sposób mógłby mi bardzo przyspieszyć pracę.
  • #4
    adamas_nt
    Moderator of Programming
    ScanSpeak wrote:
    Interesują mnie wartości z dwóch wierszy- drugiego i czwartego. (...) Chciałbym użyć makra do wyszukania tych wierszy z pierwszego arkusza, gdzie występują wartości szukane w drugim arkuszu i przekopiowanie wszystkich tych wierszy do np. 3 arkusza.
    Z tego wynika, że szukasz duplikatów wierszy 1 i 4 z arkusza Nr1 w arkuszu Nr2. Zdaje się, że coś pominąłeś/pomyliłeś, albo czegoś nie rozumiem.
    1. Doprecyzuj.
    2. Poszukaj tematów z porównywaniem i warunkowym kopiowaniem wartości (wierszy) w pętlach.
  • #5
    ScanSpeak
    Level 2  
    adamas_nt wrote:
    ScanSpeak wrote:
    Interesują mnie wartości z dwóch wierszy- drugiego i czwartego. (...) Chciałbym użyć makra do wyszukania tych wierszy z pierwszego arkusza, gdzie występują wartości szukane w drugim arkuszu i przekopiowanie wszystkich tych wierszy do np. 3 arkusza.
    Z tego wynika, że szukasz duplikatów wierszy 1 i 4 z arkusza Nr1 w arkuszu Nr2. Zdaje się, że coś pominąłeś/pomyliłeś, albo czegoś nie rozumiem.
    1. Doprecyzuj.
    2. Poszukaj tematów z porównywaniem i warunkowym kopiowaniem wartości (wierszy) w pętlach.


    Adamas,
    faktycznie pomyliłem się pisząć. Sprawa dotyczy wartości z 2 i 4 kolumny jako informacji na podstawie, których po porównaniu z wartościami z drugiego arkusza makro przekopiuje określone wiersze.
    Wyszukiwałem już tematy o kopiowaniu wierszy, jednak nie znalazłem pomocy adekwatnej do mojego poziomu vba i zbliżonego do określonego zadania.
    W związku z tym nadal pozostanę zobligowany za pomoc w tej materii.

    Pozdrawiam
  • #6
    adamas_nt
    Moderator of Programming
    [excel][vba] kopiowanie wierszy
    [excel][vba] kopiowanie wierszy
    Potrzebujesz dwóch zagnieżdżonych pętli. Najwygodniej Do While.

    Tutaj przykład (post #10). Co prawda na pętlach For i plikach, ale schemat właściwy.