logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

VBA/Excel - usuwanie wierszy w pliku na podstawie danych w innym pliku

Tomek0105 16 Lut 2013 22:53 5334 10
REKLAMA
  • #1 11944684
    Tomek0105
    Poziom 9  
    Posty: 7
    Witam.
    Potrzebuję makro, które usunie mi cały wiersz z pliku na podstawie danych zawartych w innym pliku. Oto mały opis jak wygląda sytuacja:

    W pliku nr 1 mam trzy kolumny z danymi A, B, C. Potrzebuję, żeby makro na podstawie wartości z kolumny C przeszukiwało kolumnę C w pliku nr 2 i jeżeli danej wartości nie znajdzie, w pliku nr 2 kasowało wiersz zawierający tą wartość w pliku nr 1.

    Dziękuje za szybką pomoc.
  • REKLAMA
  • #2 11945183
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Tomek0105 napisał:
    Potrzebuję makro, które usunie mi cały wiersz
    Co stoi na przeszkodzie, aby kolega napisał sobie takie makro?

    Przykładów różnych pętli jest na naszym forum pod dostatkiem, usuwanie wiersza można nagrać rejestratorem, kod wstawić do pętli i podstawić zmienne.

    Metoda do wyboru: porównywanie każdej z każdą, lub wyszukiwanie (Find)
    W razie problemów z działaniem, proszę pisać śmiało. Ktoś pomoże.

    P.S. Posty proszę pisać zgodnie z zasadami j.polskiego. Błędy (tym razem) poprawiłem. [mod]
  • REKLAMA
  • #3 11945563
    Tomek0105
    Poziom 9  
    Posty: 7
    niestety nie udało mi się znaleźć nic co mógłbym wykorzystać w moim pliku.
    umiem napisać makro, które usunie mi cały wiersz ale pod warunkiem że, podam wartość, która ma być szukana. ale nie umiem napisać takiego makro, które usunie mi wiersz w na podstawie danych z innego pliku.

    pozdrawiam
  • #4 11947627
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Wrzuć to makro, uzupełnimy...
  • #5 11948045
    Tomek0105
    Poziom 9  
    Posty: 7
    w załączniku są trzy pliki (właśnie na tych plikach chce pracować).
    w pliku "test1.xlsm" znajduje się dwa kody, pierwsze makro "pobieranie danych" działa prawidłowo. nie mogę sobie poradzić z tym drugim.
    w plikach "already late.xlsx" i "test.xlsx" znajdują się dane na, których chce pracować.
    Załączniki:
    • already late.rar (6.69 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • test.rar (7.4 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • test1.rar (22.83 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #6 11948096
    Tomek0105
    Poziom 9  
    Posty: 7
    Przepraszam poprzednio nie opisałem dokładnie co bym chciał osiągnąć.
    po wciśnięciu przycisku nr 2 w pliku "test1.xlsm" chciałbym żeby makro wyszukiwało wartości znajdujące się w pliku "test.xlsx" w kolumnie "D" i szukał ich w pliku"already late.xlsx" w kolumnie "C". I w przypadku gdy nie znajdzie danej wartości, żeby skasowało wiersze w pliku "test.xlsx" z tą daną wartością.

    mam nadzieje, że w miarę prosto to opisałem.

    dziękuje za pomoc
  • REKLAMA
  • #7 11949405
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Zrobiłbym to tak:

    Zastosowałbym pętlę Do While, gdzie warunkiem będzie niepusta komórka w kolumnie D arkusza "Raport" w pliku "test". Obszukujemy kolumnę C w pliku "alredy..."

    Metoda Find wygeneruje błąd jeśli nie znajdzie szukanej frazy. Czyli jeśli błędu nie ma - pracownik jest. Jeśli błąd - pracownik zwolniony, można usunąć wiersz wg schematu (oczywiście obsługa błędów wyłączona /On Error Resume Next/):

    If Err then
       usuwamy wiersz, bo pracownika nie ma
       musimy tu zmniejszyć Nr wiersza o 1 (przesuną się w górę po usunięciu)
    Else
       tu ew. kod jeśli pracownik jest
    End if
  • #8 11950130
    Tomek0105
    Poziom 9  
    Posty: 7
    ok. a czy mógłbyś mi dopisać ten kawałek kodu? Ponieważ mi coś nie wychodzi.
    będę bardzo wdzięczny.

    pozdrawiam
  • #9 11953832
    Tomek0105
    Poziom 9  
    Posty: 7
    Napisałem coś takiego:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    ale zamiast usuwać wiersz z konkretną wartością to usuwa zawsze pierwszy wiersz.
    Bardzo proszę o pomoc
  • #10 11955161
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Jeśli dane są już wpisane do tablicy, to przeszukuj wg niej.
    Nie analizowałem specjalnie, wstawiłem tylko pętlę z metodą Find, o której wcześniej pisałem.
    Sprawdź działanie, może okazać się że powinno być odwrotnie... Dla pewności masz wybór w oknie komunikatu ;)

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #11 11955693
    Tomek0105
    Poziom 9  
    Posty: 7
    tak powinno być odwrotnie. ale może uda mi się to przerobić.

    dziękuje bardzo za pomoc

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje makra VBA, które usunie wiersze z pliku "test.xlsx" na podstawie wartości z kolumny "D" w tym pliku oraz kolumny "C" w pliku "already late.xlsx". W odpowiedziach zasugerowano użycie pętli Do While oraz metody Find do przeszukiwania danych. Użytkownik podzielił się kodem, który otwiera pliki i przeszukuje dane, jednak napotkał trudności w implementacji. W dalszej dyskusji zaproponowano poprawki do kodu oraz wskazówki dotyczące obsługi błędów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA