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] pobieranie okreslonych danych do jednego arkusza

ZdzichuRolnik 27 Lut 2017 10:37 642 5
  • #1 27 Lut 2017 10:37
    ZdzichuRolnik
    Poziom 2  

    Witam Serdecznie,


    Dopiero zaczynam swoja przygode z VBA,
    Potrzebuje napisac macro ktore bedzie zbieralo dane z 14dni.
    Codziennie puszczane i zbiera zakladke z dzisiaj oraz 13 poprzednich w Excelu.

    Zatrzymalem sie na etapie pobieraniu danych z obecnego aarkusza i kopiowaniu danych do innego pliku - otwartego.

    Najbardziej zalezy mi na pobieraniu danych z poprzednich komorek.

    zakladki nazywane sa dniem miesiaca.
    Dzisiaj zakladka nazywa sie 27 nalezy zebrac dane od zakladki 13 do 27

    Dziekuje za zainteresowanie sie tematem

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0 5
  • #2 27 Lut 2017 20:34
    adamas_nt
    Moderator Programowanie

    Myślę, że pętla For na "wstecznym" powinna się sprawdzić. Coś w rodzaju:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #3 27 Lut 2017 21:38
    ZdzichuRolnik
    Poziom 2  

    Hej,

    Niestety nie mam pojęcia jak to połączyć.

    Kod pobiera dobra ilość komórek, odpowiednią dla 14 arkuszy jednak jedynie z jednego arkusza.
    Nie wiem jak zmienić funkcje by wracała do poprzednich arkuszy. Bardzo dziękuję za poprzedni post i za zainteresowanie się tematem.
    Będę się jeszcze głowił jak użyć funkcji For, jednak nie wiem czy coś z tego wyjdzie :(

    Problematyczne jest użycie sheets(str(i)).cells(w, zz)
    macro wywala problem, zapewne przez to ze nie wiem jak go użyć,

    wkleilem ta linijke kodu pod
    Do Until w = 400 ale nie poszło

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #4 27 Lut 2017 21:54
    adamas_nt
    Moderator Programowanie

    W pliku jest 16 arkuszy, więc zmieniłem trochę warunki (opis w makro).

    P.S. Kod umieszczaj pomiędzy znacznikami 'Syntax' (opcja "Listing kodu")

    0
  • #5 27 Lut 2017 22:29
    ZdzichuRolnik
    Poziom 2  

    Mistrzostwo świata !!!

    Pięknie to działa, po włożeniu do całego pliku i zmianie kodu na dane z 14 dni wstecz działa wyśmienicie !!! :)

    Super.
    Mega Wow.

    Mam pytanie czy jak będę to chciał zastosować na przełomie miesięcy to czy lepiej jak wszystkie dni będą w jednym excelu?
    Czy wtedy będę mógł korzystać z innego określenia daty, no dzień i miesiąc -14? (zakładki 12.12 i pobieraj do 12.12 -14 ?)

    Czy lepiej po przez otwarcie innego pliku z pobraniem brakujących dni? (np stworzenie makra dla danych dni dla 3 dodatkowo funkcja pobierz 11 ostatnich dni z innego pliku?)

    Chociaż to już bardziej ambitne zadanie.

    Bardzo dziękuje za pomoc, przysiądę się do tego i postaram się zrozumieć każdą linijkę kodu :)

    0
  • #6 27 Lut 2017 22:53
    adamas_nt
    Moderator Programowanie

    Nie będzie trudne, jeśli ustalisz jakieś stałe zasady.

    Jeśli nazwiesz arkusze "31.1", "1.2", "2.2" i będą one zawsze po kolei, to sprawdzasz index bieżącego i po Step - 1 cofasz się o 14 po indeksach.

    Jeśli kolejne miesiące będziesz miał w osobnych plikach, to znów kwestia odp nazwania plików. Wystarczy dopisać obsługę błędu (out of range), otworzyć plik z poprzednim i dokończyć pętlę.

    Np: 12_2016.xls, 1_2017.xls, 2_2017.xls, ...
    Jeżeli dzisiaj mamy 3-01-2017, to po 3-ch krokach otwieramy 12_2016 i wykonujemy pozostałe 11 kroków (od najwyższego indeksu wstecz).

    Odrobinkę "dłubaniny", ale do zrobienia. Twój wybór jak to zorganizować...

    0