X

Pobieranie danych z wielu arkuszy

bartosz18 26 Jul 2010 09:07
  • #1 26 Jul 2010 09:07
    bartosz18
    Level 7  
    Helpful post? (0)
    Witam
    Mam problem. Mianowicie mam plik excela w którym mam 52 arkusze (liczba tygodni w roku). W nowym pliku excela tworzę podsumowanie tych 52 tyg. Problem polega na tym, że chce pobierać dane dla każdego tygodnia z kolejnego arkusza i nie wiem jak to zrobić. Przykładowo dla 1 tyg biorę dane z 1 arkusza jednak dla drugiego tygodnia nie pobiera mi danych z drugiego arkusza tylko po przeciągnięciu kopiuje formułe 1 tygodnia i wszystko muszę wpisywać ręcznie.

    Proszę o pomoc, jak za pomocą formuły możnaby ten problem rozwiązać.
  • #2 26 Jul 2010 09:14
    dt1
    Moderator - Komputery Serwis
    Helpful post? (0)
    W tym przypadku na myśl nasuwa mi się makro. Zakładając, że wspomniane 52 arkusze są bardzo powtarzalne (jeśli chodzi o rozmieszczenie danych) wyprodukowanie za pomocą makro 53-go arkusza nie powinno być zbyt skomplikowane. Ale może formułą też się da :)
  • #3 26 Jul 2010 09:19
    bartosz18
    Level 7  
    Topic author Helpful post? (0)
    To nie będzie 53 arkusz tylko podsumowanie tworzę w nowym pliku excela. Najlepiej chciałbym to zrobić formułą, na makro się nie znam.

    Aha, rozmieszczenie danych w każdym arkuszu jest identyczne.

    Pozdrawiam
  • #4 26 Jul 2010 09:51
    dt1
    Moderator - Komputery Serwis
    Helpful post? (0)
    Jeśli dostaniesz wynik w 53 arkuszu, to jaki problem przekleić to do nowego pliku? :) Może ktoś doradzi z jakąś formułą, ja obstawiam jednak na makro :)
  • #5 26 Jul 2010 10:11
    mw.marynarz
    Level 9  
    Helpful post? (0)
    Jeżeli nie chcesz korzystać z makr proponuję zastosować funkcję adres pośredni.
    Myślę że ta formuła będzie pomocna, umieść ją w pierwszej komórce arkusza.
    Nazwa pliku Adres2.xlsx
    nazwy kolejnych zakładek umieść w kolumnie G.

    Code:
    SUMA(ADR.POŚR("[Adres2.xlsx]"&G1&"!B1:B100"))


    Dodatkowo umieszczam załącznik który myślę rozwieje wszelkie wątpliwości.

    Pozdrawiam
    Attachments:
  • #6 26 Jul 2010 11:39
    bartosz18
    Level 7  
    Topic author Helpful post? (0)
    A jak tą formułę zastosować dla dwóch plików excela? Dajmy na to Plik1 zawiera 52 arkusze a w Pliku2 mają występować dane z tych samych komórek z każdego arkusza w Plik1 np B10 z każdego z 52 arkuszy ma być przeniesione na Plik2 w postaci kolumny.
  • #7 26 Jul 2010 12:39
    mw.marynarz
    Level 9  
    Helpful post? (0)
    Zastąp środek formuły kodem
    Code:
    '["&G2&"]Arkusz1'


    Podsyłam wersję zmodyfikowaną zapewne dasz sobie radę. Jednak pamiętaj iż w przypadku formuł realizacja tego zadania wymaga aby wszystkie pliki były otwarte. Po otwarciu ostatniego pliku gdyby wyświetlały się błędy dokonaj update formuły.

    Pozdrawiam
    Attachments:
  • #8 26 Jul 2010 14:45
    bartosz18
    Level 7  
    Topic author Helpful post? (0)
    Dziękuję, ale to chyba nadal nie to o co mi chodzi bo nie bardzo wiem jak to skleić.

    W Pliku1 mam 52 arkusze. W kazdym arkuszu jest ta sama struktura i budowa. Są tam tabele. W Pliku2 w kolumnie A tworzę liste 52 tygodniu w 52 wierszach. W kolumnie B chce otrzymać wartości komórki dla przykładu C10 z Pliku1 dla pierwszego tygodnia z arkusza nr 1, dla drugiego tygodnia wartość komórki C10 z arkusza 2, dla trzeciego tyg wartość komórki C10 z arkusza 3 itd.. Dla ułatwienia dodam, że arkusze w Pliku1 noszą nazwy od R1 do R52.

    Jeszczę raz proszę o pomoc

    Pozdrawiam
  • #9 26 Jul 2010 15:32
    mw.marynarz
    Level 9  
    Helpful post? (0)
    Podsumowanie koniecznie musi to być w osobnym pliku "plik2" ? Takie są wytyczne? Wydaje mi się że utrudniasz sobie zadanie.
  • #10 26 Jul 2010 16:01
    dt1
    Moderator - Komputery Serwis
    Helpful post? (0)
    Makro chyba wyjdzie lepiej, niż kombinowanie. Takie na szybciora zmontowane w 5 minut mniej więcej robi chyba to, co chcesz (pewnie trzeba je gdzieś tam doszlifować, ale z grubsza robi swoje). Jako że jest krótkie, umieszczę je w treści postu. Dodatkowo w załączniku plik xls (excel 2003), zawierający trzy arkusze, w każdym komórka C10 ma wartość. Plik ma podłączone makro. Po jego uruchomieniu (ALT+F8, Makro1) powinien się stworzyć nowy zeszyt, w którym od B1 w dół będą wypisane kolejno wartości z komórek C10 wszystkich arkuszy pliku, z którego startuje się makro.

    Code:
    Sub Makro1()
    
    '
    ' Makro1 zarejestrowane 2010-07-26, autor Darek
    '
    Dim i As Integer
    Dim elementy()
    ReDim elementy(Sheets.Count)
    For i = 1 To Sheets.Count
    elementy(i) = Sheets(i).Range("C10").Value
    Next i
    Workbooks.Add
    Range("B1").Activate
    For i = 1 To Sheets.Count
    ActiveCell.Offset(i - 1, 0).Value = elementy(i)
    Next i
    End Sub
  • #11 26 Jul 2010 16:07
    bartosz18
    Level 7  
    Topic author Helpful post? (0)
    mw.marynarz wrote:
    Podsumowanie koniecznie musi to być w osobnym pliku "plik2" ? Takie są wytyczne? Wydaje mi się że utrudniasz sobie zadanie.

    Problem w tym, że musi, dlatego że Plik2 ma bardzo dużo kolumn więc musi być w Excelu 2007 natomiast Plik1 musi być w Excelu 2003 dlatego, że w takie oprogramowanie wyposażeni są pracownicy którzy uzupełniają te tabele natomiast Plik2 jest podsumowaniem tylko dla mnie więc może być 2007. Niestety ale inaczej tego nie rozwiąże.
  • #12 27 Jul 2010 09:00
    mw.marynarz
    Level 9  
    Helpful post? (0)
    Bardzo dużo kolumn, możesz podać dokładnie ile?
    Jakie są orientacyjne rozmiary plików ile kolumn i wierszy?
    Czy znasz się na programowaniu makr ?
  • #13 27 Jul 2010 12:27
    bartosz18
    Level 7  
    Topic author Helpful post? (0)
    Kolumn ok 600 natomiast wierszy 53.
    Na makrach się nie znam w ogóle.
    Wpadłem na pomysł, że może jedną kolumnę zrobiłbym ręcznie, następnie przekopiował funkcje to następnych kolumn i zmieniał tylko adres komórki w formule np $B$10 na $D$10. I tutaj moje pytanie, czy da się zrobić tak, żeby każde "B" w kolumnie zamienić na "D" jednym ruchem a nie żeby w każdej kolumnie po kolei?

    Pozdrawiam
  Search 4 million + Products
Browse Products