Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

VBA Excel - makro do kopiowania wierszy na podstawie wartości z komórek

buli95 17 Jul 2021 15:37 519 5
  • #1
    buli95
    Level 6  
    Cześć, oglądam tutorialu o VBA, próbuje coś napisać, ale programowanie zawsze mnie przerastało. Proszę o pomoc przy stworzeniu makro.

    Posiadam plik Excel z 6 arkuszami (nazwy od A do F). W każdym z arkuszy 3 górne wiersze są zajęte przez nagłówki kolumn (dane zaczynają się od 4 wiersza).

    Chciałbym aby makro w pierwszej kolejności czyściło arkusz A w zakresie komórek A4:R200. Następnie makro ma sprawdzać kolumnę O w arkuszu B w zakresie O4:O300. Jeżeli wartości komórki z kolumny O jest >= -30, to makro kopiuje cały wiersz z tą komórką do pierwszego pustego wiersza w arkuszu A. Ta procedura ma się odbyć w każdym z arkuszy od B do F - sukcesywnie wypełniać arkusz A wierszami z arkuszy B-F.

    Pozdrawiam
  • Helpful post
    #2
    PRL
    Level 40  
    Code: vbscript
    Log in, to see the code
  • Helpful post
    #3
    Maciej Gonet
    VBA, Excel specialist
    Brak załącznika to poważny mankament!
    Nie wiadomo, jakie dane są w kolumnie "O".
    W kodzie PRL jest sprawdzany warunek:
    Code: vbscript
    Log in, to see the code
    Otóż warunek ten spełniają nie tylko liczby >= -30, ale również puste komórki, dowolne teksty, w tym teksty puste, wartości logiczne. A jeśli w komórce jest wartość błędu, to program zatrzyma się z komunikatem błędu "Type mismatch".
    Taki kod spełni swoje zadanie, jeśli w kolumnie "O" są wyłącznie liczby.
    Jeśli mogą być dane innych typów, to można to sprawdzić np. funkcją:
    Code: vbscript
    Log in, to see the code
  • #4
    buli95
    Level 6  
    Dziękuję za szybką pomoc!

    W kolumnie O znajdują się liczby (dodatnie, ujemne, czasem 0), a dokładnie liczba dni opóźnienia np. coś miało być zrobione do 10.07, dziś jest 18.07, więc kolumna O pokaże liczbę -8. Ale pojawiają się też puste wiersze = puste komórki w kolumnie O.

    Przetestuję przesłane przez Was funkcje :)
  • #5
    GRUZIN73
    Level 10  
    Szanowni koledzy
    mam makro które kopiuje mi całe wiersze wtedy gdy jest spełniony warunek ( makro nie jest napisane przeze mnie a jedynie dostosowane )
    działa super ale warunek dotyczy tylko jednej komórki. dopisałem sobie kilka takich samych instrukcji w których tylko zmieniałem komórkę z warunkiem . Dopóki warunków miałem ze 20 to nie szukałem innego rozwiązania. Teraz muszę przeszukiwać arkusz z tysiącem wierszy i mam ponad 100 komórek z warunkami. Czy mógłbym poprosić o taką przeróbkę makra aby w jednej instrukcji wskazać zakres komórek w kolumnie B w arkuszu Arkusz3 . Jeżeli instrukcja znajdzie dopasowanie w wierszu do którejkolwiek z komórek w kolumnie B to ma skopiować wiersz z arkusz1 do arkusz2
    załączyłem plik z wymyślonymi danymi i wrzuciłem tam makro.
    Z góry dziękuję za pomoc.
  • #6
    PRL
    Level 40  
    Proponuję otworzyć nowy wątek i napisać co i jak. Trochę dokładniej niż powyżej.
    Łatwiej będzie napisać kod.