Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[EXCEL VBA] przenoszenie danych według kryteriów

rybisznurek 10 Maj 2017 15:59 735 4
  • #1 10 Maj 2017 15:59
    rybisznurek
    Poziom 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

    0 4
  • #2 10 Maj 2017 17:05
    JRV
    Specjalista - VBA, Excel

    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ęć

    0
  • #4 11 Maj 2017 09:13
    rybisznurek
    Poziom 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

    0
  • #5 11 Maj 2017 12:54
    Prot
    Poziom 28  

    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/viewtopic.php?p=16283214#16283214
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=15892088#15892088

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

    0