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 - Sumowanie wybranych danych drugiego skoroszytu

syroB89 16 Lip 2013 11:25 3036 8
  • #1 16 Lip 2013 11:25
    syroB89
    Poziom 8  

    Witam!

    Zachęcony wczorajszymi sukcesami w rozwiązywaniu problemów z VBA chciałbym prosić was o dalszą pomoc. :)

    Mam następującą sytuację:

    Mam jeden skoroszyt o nazwie "Powierzchnie". W skoroszycie tym są różnego rodzaju budynki w kolejnych arkuszach. Na potrzeby pisania makra nazwałem arkusze "Biurowiec", "Centrum handlowe" oraz "Magazyn". Do każdego z tych arkuszy chciałbym, żeby pobierały się podczas otwierania pliku dane ze skoroszytu "Statystyka", z arkusza "Warszawa".

    W arkuszu tym w kolejnych wierszach są części poszczególnych budynków (np. Biurowiec cz. A, Biurowiec cz. B), a w kolumnach informacje o nich, np. "Powierzchnia", "Powierzchnia planowana", "Powierzchnia dostępna".

    Zadanie polega na tym, żeby do skoroszytu "Powierzchnie" pobierały się dane do odpowiednich arkuszy w odpowiednie komórki dotyczące sumarycznych powierzchni. Tj. żeby zbierały się i sumowały powierzchnie ze skoroszytu "Statystyka" dotyczące wszystkich części budynku i wklejały do skoroszytu "Powierzchnie".

    Tym razem za pomoc oferuję siano bo konia z rzędem opchnąłem wczoraj. ;)

    Dodano po 1 [minuty]:

    Dorzucam przykładowe pliki do zadania. :)

    0 8
  • Pomocny post
    #2 16 Lip 2013 12:44
    adamas_nt
    Moderator Programowanie

    Potrzebne będą dwie zagnieżdżone pętle. W przykładzie poniżej, makro porównuje nazwę arkusza z fragmentem ciągu w komórkach kolumny 'A'. Urozmaiciłeś nieco różną wielkością liter, dlatego LCase.

    Do modułu wklej

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Do Thisworkbook
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Przeanalizuj, dostosuj do własnych potrzeb.

    P.S. Sianem się nie wykręcisz ;)

    0
  • #3 16 Lip 2013 16:00
    syroB89
    Poziom 8  

    Doskonale, odwaliłeś całą robotę za mnie... :)

    Spróbuję teraz to zrozumieć i dostosować do dużej bazy danych. Mam tylko jedną wątpliwość: wydaje mi się, że makro powinno dodawać sumę wartości ze skoroszytu "Statystyka" do pustej komórki a nie do już istniejącej i zapełnionej danymi bo przy odświeżaniu będą nam się sumować powierzchnie nowe z tymi co były do tej pory w arkuszach.

    No i jeszcze automatyczne wywołanie makra mi nie działa, ale trochę sam w tym pogrzebię bo na prawdę wszystko mi napisałeś. Jestem bardzo wdzięczny. :)

    Dodano po 27 [minuty]:

    Jakimś cudem nie skopiowałem wiersza

    ark.Range("B2:B4").ClearContents

    albo go dodałeś. :)

    Dodano po 2 [godziny] 3 [minuty]:

    Mam jeszcze ciekawe pytanie:

    czy Twoje makro może zostać użyte w Powerpoincie? Ten program też ma obsługę VBA jak widzę. Mam w nim tabelki do każdego budynku i ta suma powierzchni też by mi się przydała tam. Jak z tym jest? :)

    0
  • #4 16 Lip 2013 18:02
    adamas_nt
    Moderator Programowanie

    syroB89 napisał:
    czy Twoje makro może zostać użyte w Powerpoincie? Ten program też ma obsługę VBA jak widzę. Mam w nim tabelki do każdego budynku i ta suma powierzchni też by mi się przydała tam. Jak z tym jest?
    Wszystko jest do zrobienia. Zależy jakich kontrolek używasz w slajdach. I najważniejsze: PowerPoint, o ile mi wiadomo, nie ma obsługi zdarzeń. Trzeba będzie coś wymyślić...

    Na początek zaptaszkuj w referencjach dostęp do obiektów Excela. Nie mam zainstalowanego PowerPointa (używam PPViewer), ale nazwa zapewne będzie taka sama jak w Excelu: "Microsoft Excel xx.x Object Library"

    Dalsze działanie to zadeklarowanie obiektu, otwarcie pliku, etc

    Przećwicz na początek takie coś (nie testowane w PP)
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Włącz oczywiście obsługę makr w PP ;)

    Update: Hmm. Piszą, że można: Link
    Jednak AutoRun w PP2007^ to grubsza kombinacja Link

    0
  • #5 17 Lip 2013 09:18
    syroB89
    Poziom 8  

    Adamas na razie zostawiam temat Powerpointa bo muszę dopracować to co zacząłem. Za wcześnie zacząłem pytać. :)

    Mam pytania jeszcze do poprzedniego makra:
    1. Jak zrobić, żeby z pierwszego z rodzajów budynków (tj. np. "Biurowiec cz. A") pobierało mi dane z kolejnej kolumny? Próbowałem to dopisać, ale zasysa mi wszystkie dane dot. np. Biurowca a mi zależy tylko na jednorazowej informacji. Np. w kolejnej kolumnie po powierzchni mam właściciela, który jest identyczny dla wszystkich części budynku, ale może się zmienić w pewnym momencie w bazie i chciałbym, żeby makro też to sprawdzało.
    Próbuję sam coś wymyślić, może mi się uda. :)

    2. Załóżmy, że każdy z budynków - np. Biurowiec cz. A, Biurowiec cz. B, Biurowiec cz. C ma w drugiej kolumnie określone czy jest "planowany", czy "istniejący". Moje pytanie brzmi, czy da się zdefiniować, żeby "Powierzchnia dostępna" zbierała się za pomocą naszego makra tylko z budynków "istniejących"?
    Tego sobie za bardzo nie wyobrażam jak zrobić, może coś podpowiecie? Szczególnie liczę na mistrza Adamasa. ;)

    0
  • Pomocny post
    #6 17 Lip 2013 09:30
    adamas_nt
    Moderator Programowanie

    Dopisz kolejną instrukcję warunkową...

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Jeśli tylko dostępna, to
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #7 17 Lip 2013 09:48
    syroB89
    Poziom 8  

    Działa. :)

    To było proste, ale ja na razie nie mogę zrozumieć jak działa ta linijka zbierająca:

    Kod: vb
    Zaloguj się, aby zobaczyć kod


    Przed następnymi pytaniami doczytam dokładnie jak ona działa. Tymczasem dziękuję Ci bardzo. :)

    0
  • #8 19 Lip 2013 15:17
    syroB89
    Poziom 8  

    Wróciłem wczoraj do tematu PowerPointa, ale jest on znacznie bardziej wymagający bo opiera się na obiektach, na razie nie odnotowałem sukcesu, wiec może ktoś z was będzie mógł mi pomóc.

    W załączniku jest prezentacja do której ma się pobierać po wywołaniu makra informacja o powierzchni (tak jak poprzednio, tylko zamiast do excella dane idą do komórek tabelki) oraz dodatkowo informacja o właścicielu (ma się pobierać tylko z jednego z wierszy dot. danego typu budynku - tj. tylko z jednej części biurowca lub centrum handlowego).

    Pliki w załączeniu. Bardzo dziękuję za wszelkie sugestie i pomoc. :)

    0
  • #9 19 Lip 2013 15:19
    syroB89
    Poziom 8  

    Warto odnotować, że identyfikacja slajdów powinna być po tytułowym polu tekstowym. Przynajmniej ja tak próbuję zrobić. :)

    0