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

[EXCEL VBA] Jak przenosić dane według kryteriów do innego arkusza?

rybisznurek 10 Maj 2017 15:59 1452 4
REKLAMA
  • #1 16467827
    rybisznurek
    Poziom 8  
    Posty: 15
    Ocena: 2
    Mam problem z przenoszeniem danych z bazy do innego arkusza.
    Dla danych typów produktu muszę przenosić specyficzne dane o wszystkich transakcjach które ich dotyczą. Manualne wycinanie z filtrowanej bazy danych jest bardzo czasochłonne i próbuję sobie to usprawnić.

    Słabo ogarniam VBA więc w tej chwili robię to formułami (próbowałem na różne sposoby), jednak każdy poszukiwany typ musi być wyszukiwany osobno. Do tego plik niesamowicie zwalnia, bo baza jest spora i formuły musiały „być daleko przeciągnięte”, więc ich przeliczanie obciąża excel.
    Nie znalazłem też podobnego makra online więc postanowiłem zwrócić się z prośbą o pomoc na tym forum.

    Poniżej opisałem jakie działanie byłoby idealne:
    Przykładowy wygląd nagłówków w bazie:
    A B C D E F G (…)
    1 No Date Name Customer Type received Price Tax …

    I arkuszu docelowym:
    A B C D E
    1 Product Customer Price Tax

    W kolumnie K arkusza docelowego chciałbym móc podać pojedyncze pierwsze kryterium (dajmy na to "nazwę"), a w L dowolną liczbę (max 50) poszukiwanych typów (ciągów znaków).

    Po czym z uwzględnieniem pierwszego kryterium (sprawdzanego w kolumnie C), w bazie wyszukają się wszystkie wiersze z pierwszym poszukiwanym typem (w kolumnie E), a następnie dane z kolumn o takiej samej nazwie jak w arkuszu docelowym przeniosą się do arkusza docelowego (będzie w nim maksymalnie 8 takich kolumn).
    I tak kolejno dla każdego poszukiwanej typu, przyklejając wyniki poniżej.


    Mam nadzieję, że w miarę jasno to opisałem. Będę wdzięczny za każdą pomoc
  • REKLAMA
  • #2 16467955
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    To byłoby bardziej przejrzyste, jeśli było przykładem te dwa arkusze, dwa "poszukiwanych typy"
    rybisznurek napisał:
    do arkusza docelowego (będzie w nim maksymalnie 8 takich kolumn
    rybisznurek napisał:
    I arkuszu docelowym:
    A B C D E
    To jest tylko pięć
  • REKLAMA
  • REKLAMA
  • #4 16469268
    rybisznurek
    Poziom 8  
    Posty: 15
    Ocena: 2
    Prot napisał:
    Należy rozumieć, że ta "baza danych" też jest w Excelu ? i wypróbowałeś już wszystkie "zwykłe" metody odwołań i łączy :?:

    Tak, baza to po prostu arkusz w excelu.
    Wydaje mi się, że próbowałem już wszystkiego i nic nie zapewnia takiej funkcjonalności jaka byłaby optymalna. Tak jak pisałem, mam w tej chwili formuły które dają radę to wyciągać (z użyciem if/indirect/match/offset), ale każdy wyszukiwany "typ" trzeba sprawdzać osobno i plik działa bardzo powoli. Dodatkowo zmiany poszukiwanych informacji są dość uciążliwe, więc próbuję dalej to usprawniać, żeby tracić na to mniej czasu.

    JRV napisał:
    rybisznurek napisał:
    I arkuszu docelowym:
    A B C D E
    To jest tylko pięć

    wkleiłem przykładowe 5 pierwszych, ogólnie może być 8. Chodziło mi o to żeby makro "rozpoznawało kolumny" po ich nagłówkach, tak żeby można było dowolnie dobierać poszukiwane informacje. Baza też ma parędziesiąt kolumn a nie te kilka przykładowych.

    Spróbuje jeszcze dodatkowo to przedstawić:

    Mamy bazę danych z xx kolumn i w każdej z nich są dane które potencjalnie mogą być potrzebne. W kolumnie C mamy nazwę, a w E typ (chociaż lepiej jakby makro nie adresowało kolumny C i E tylko takie których nagłówek to "Name" / "Type"

    W arkuszu docelowym, dodajemy manualnie od 1-8 nagłówków kolumn (pokrywających się z nagłówkami kolumn w bazie). W K1 wpisujemy poszukiwaną nazwę, a w kolumnie L dowolną ilość typów (w bazie jest ich niecałe 100, stąd maksimum o którym wspomniałem wcześniej). Po czym kolumny z nagłówkami zapełniają się danymi z bazy, które spełniają kryterium nazwy i typu, kolejno dla wszystkich poszukiwanych typów.

    Przykładowo Szukamy nazwy "Apple" typy "11.04"/"abf4"/"HcG5"

    W arkuszu docelowym mamy kolumny "Customer"/"Date"/"Price"/"Tax"

    Naszymi wynikami będą kolejno po sobie:
    Wszystkie dane z tych 4 kolumn z bazy dla "Apple" & "11.04"
    Wszystkie dane z tych 4 kolumn z bazy dla "Apple" & "abf4"
    Wszystkie dane z tych 4 kolumn z bazy dla "Apple" & "HcG5"

    Nie mogę załączyć tych arkuszy, ale mógłbym sfabrykować coś podobnego jeśli to dalej nie brzmi jasno
  • #5 16469603
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    rybisznurek napisał:
    Nie znalazłem też podobnego makra online


    Dla podobnych "baz" w Excelu, na naszym forum elektroda.pl omawiane były już wiele razy metody filtrowania i tworzenia "widoków przekrojowych" takich mini baz ;-)

    Proponuje przejrzeć choćby:
    https://www.elektroda.pl/rtvforum/topic3308863.html#16283214
    https://www.elektroda.pl/rtvforum/topic3232823.html#15892088

    i wykorzystać tam używane kody i metody (po oczywistych i niezbędnych modyfikacjach przystosowujących je do Twojej nieznanej-tajnej bazy :D )
REKLAMA