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.

VBA Excel - Pobieranie danych z arkusza o konkretnym numerze

Hedgiddi 21 Cze 2016 11:22 1239 3
  • #1 21 Cze 2016 11:22
    Hedgiddi
    Poziom 2  

    Witam,

    Zmagam się już od dłuższego czasu z problemem napisania następującego makra albo funkcji (aczkolwiek podejrzewam, że makrem będzie szybciej i lepiej):

    Mam plik, w którym jeden arkusz, nazwijmy go ''Zestawienie'' zawiera tabelkę, gdzie w kolumnie A mamy nr klienta, a w kolejnych pola do uzupełnienia.

    I teraz mój problem: chcę, aby pobrały się do niej dane z ponad stu różnych arkuszy, każdy przypisany innemu nr klienta (tu jeszcze są określone warunki, z której komórki z arkusza klienta "Klient1"..."Klient100" pobrać do której kolumny komórki arkusza Zestawienie) ->arkusze utworzyłam makrem przypisując każdemu nazwę wg nr danego klienta, którego arkusz dotyczy

    dodam, że każdy arkusz Klientów wygląda tak samo, ta sama tabelka, tylko będzie uzupełniona różnymi danymi

    czyli tak:
    arkusz Zestawienie wygląda tak:

    nr klienta | obrót klienta | wymagany obrót klienta | rabat%K | zniżka
    K1 | obrotKlienta1 | wymagany obrów K1 | rabat%K1 | zniżkaK1
    K2 | obrotKlienta2 | wymagany obrów K2 | rabat%K2 | zniżkaK2
    K3 | obrotKlienta3 | wymagany obrów K3 | rabat%K3 | zniżkaK3


    Arkusz dla klienta K1:

    Rodzaj zniżki | Wymagany obrót | % rabatu
    Zniżka 1 | 10 000 | 5%
    itd..

    Arkusz dla klienta K2:

    Rodzaj zniżki | Wymagany obrót | % rabatu
    Zniżka 1 | 20 000 | 5%
    itd.


    no i ma to działać tak:
    - z arkusza Zestawienie z kol.A pobiera nr klienta (K1), wyszukuje arkusz K1 i z arkusza K1 pobiera do kolumny wymagany obrót klienta 10 0000, do kolumny rabat% dane z arkusza dot. %rabatu

    to tak z grubsza, bo kolumn mam kilkaset i warunków kilkanaście....

    chciałabym najpierw przejść przez problem ''wyszukania'' arkusza o określonym numerze

    Proszę serdecznie o pomoc

    0 3
  • #2 21 Cze 2016 11:51
    marcinj12
    Poziom 40  

    Samo wyszukanie odpowiedniego arkusza możesz zrealizować na dwa sposoby sposoby:
    1. Jeżeli wiesz na 100%, że arkusz z kodem klienta istnieje:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
    Jesli arkusz nie istnieje, makro wyrzuci błąd.

    2. Jeżeli nie jesteś pewien, czy arkusz z kodem dostawcy istnieje:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #3 21 Cze 2016 12:02
    lesławek
    Poziom 31  

    Może i można to zrobić, ale twój problem nie jest natury implementacyjnej. Popełniono błąd koncepcyjny przy planowaniu struktury danych. Nie wolno uzależniać struktury danych od jej zawartości a tu masz dokładnie taką sytuację liczba tabel zależy od liczby klientów. Moim zdaniem nie powinnaś w to brnąć. Potrzebujesz dwóch arkuszy Klienci dane główne i klienci szczegóły. Wtedy możesz robić dowolne zestawienia...

    0
  • #4 21 Cze 2016 12:15
    Hedgiddi
    Poziom 2  

    Liczba arkuszy jest tworzona makrem automatycznie, tylko dlatego, że jest ich dokładnie 102. ale jest to stała liczba klientów. w Arkuszu Zestawienie jest stała liczba klientów o konkretnych numerach i na tej podstawie utworzono poszczególne arkusze. Liczba tych arkuszy raczej nie będzie się zmieniać.

    Oddzielne dla każdego klienta arkusze zostały ustawione po to, aby pracownik (tworzę narzędzie) wpisywał stałe warunki umowy, które potem zaciągną się do pliku zestawiającego (chcę żeby to było dynamiczne - jak zmieni się % rabatu, to zmienią się wyliczenia w ''zestawieniu'', w którym są też zaciągane inne dane niż te z poszczególnych arkuszy.

    0