Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

VBA Excel Harmonogram produkcji

sothis666 04 Dec 2021 18:47 342 10
  • #1
    sothis666
    Level 9  
    Witam
    Bardzo słabo znam VBA, nieraz „pomagałem sobie” plikami z elektrody, tym razem nie mam pomysłu jak zacząć. Jeśli ktoś mógłby pochylić się nad moim problemem będę wdzięczny.
    Wyjaśniam o co chodzi:
    Mam przygotowywać harmonogramy produkcji różnych elementów. W załączniku przesyłam szkic tabel jak to ma wyglądać. Jako przykład są to słupy.
    Tabela 1 - w zakresie A2:AA26 – to tabela bazowa która się rozrasta tzn. dochodzi nowy temat jest dopisywany pod ostatnim wierszem, czasem istnieje potrzeba dopisać element do istniejącego już obiektu (np. może dojść element S-11 na obiekt Warszawa – czyli wstawiam wiersz pod S-10).
    Mam zbilansowaną ilość sztuk (kolumna 10), objętość i składowe elementów zbrojenia (kg w kolumnach L-W).
    Na podstawie danych z tej tabeli tworzę harmonogram produkcji – tabela 2 w zakresie AC-AP. Ta tabela też się rozrasta, jeśli dojdzie nowy temat będę go dopisywał dostawiając kolumny za ostatnim.
    Jeśli element w tej tabeli będzie zaznaczony na kolor szary oznacza że jest wyprodukowany, jeśli na zielony że jest gotowy do wysyłki.
    Problemy do rozwiązania:
    Tabela1:
    - muszę mieć kontrolę nad tym co rozpisane, powinno zliczać się to z zakresu w tabeli 2 (w obrębie danego tematu, elementy dla różnych tematów mają te same oznaczenia )
    - powinny zliczać się po kolorze, jeśli zaznaczony na kolor zielony wliczany jest jako wyprodukowany
    Tabela2:
    - sama tabela ma formę kalendarza – czy da się go zautomatyzować czyli dostawiam kolejny tydzień, miesiąc, pojawiają się daty nrtygodnia, na czerwono niedziele itd.?
    - ilości Vb i kg stali dla poszczególnych dni powinny się sumować ze wszystkich tematów,
    - dodatkowo czy jest taka możliwość ze użytkownik wybiera sobie zakres dat np. interesuje mnie tydzień 51 i 52 i zsumowane ilości vb oraz kg stali, oczywiście te zakresy muszą być dowolne,
    - ostatni problem to czy widzi ktoś możliwość wyboru określonego tematu i pokazania tylko jego, chodzi o to że chcę klientowi z obiektu Kraków Zabłocie pokazać tylko jego temat, czyli wybieram Kraków Zabłocie i generuje mi np. do innego pliku czy pdf zakres tabeli 1 i tabeli 2 tylko dla Kraków Zabłocie.

    Wiem że zadanie jest trudne i praktycznie od zera. Próbowałem coś zrobić w VBA ale jest to na tyle nieudolne że zdecydowałem się wysłać „goły” plik jako przykład.
    Jeśli ktoś znajdzie chwilę proszę o pomoc.
  • #2
    adamas_nt
    Moderator of Programming
    Temat ciekawy i po mojemu nie tyle trudny, co czasochłonny.
    Kolory są (przynajmniej na tę chwilę) tylko dwa, wiec przy pomocy udf wiele spraw można "załatwić" formułami.

    Z Nr tygodnia walczyliśmy jakiś czas temu i są rozwiązania na elektrodzie. Trzeba tylko solidnie poszukać.

    Wyszukiwanie warunkowe -są narzędzia wbudowane Np tabela przestawna i kilka sprytnych funkcji.

    Zanim zaczną się pytania o szczegóły ;) koniecznie doprecyzuj sprawę danych wynikowych. Jak to ma wyglądać? Jak raport w Akccess'ie, czy forma tabeli przestawnej. Idealnie byłoby, gdybyś przygotował przykład. Rozwiązania elektrodowiczów mogą odbiegać od tego co powstało już w twojej głowie...
  • #3
    sothis666
    Level 9  
    Dzięki za zainteresowanie.
    Masz rację - jutro podeślę plik na którym pracuję, część rozwiązań (mniej lub bardziej skutecznych) już tam jest.
    Opiszę dokładnie co jak działa i może ktoś coś podpowie.
    Pozdrawiam
  • #4
    kinggustav
    Level 26  
    VBA (jak niedawno napisał w innym wątku kolega) służy głównie do automatyzowania tego, co robimy w Excelu ręcznie. Dlatego tak ważne jest pokazanie przykładu, bo jak rozumiem bez VBA też jakoś to robisz.
    Ze swojej strony namawiałbym do dokładnego (nieco szerszego) przedstawienia całego zagadnienia. Dzięki temu można wykorzystać na swoją korzyść to "Rozwiązania elektrodowiczów mogą odbiegać od tego co powstało już w twojej głowie...". Nie ma gwarancji, ale jest szansa na znalezienie jeszcze lepszego rozwiązania niż to wymyślone, a to daje największą satysfakcję wszystkim stronom. Ale żeby się tak stało, pomagający musi zrozumieć o co Ci chodzi. :)
  • #5
    PRL
    Level 40  
    Należałoby się zastanowić, czy tutaj rozwiązaniem jest napisanie małej aplikacji na przykład w Akcesie, żeby to miało ręce i nogi.
    Ale jeśli to ma być doraźne zadanie, to trzeba poczekać na Autora, żeby lepiej opisał zadanie, a nie problem.
  • #6
    sothis666
    Level 9  
    Witam
    Widzę że jest zainteresowanie więc na szybko opis. Gdyby pojawiło się hasło do otwarica pliku to : marcin
    W załączniku plik na którym pracuje. Postaram się opisać o co konkretnie mi chodzi.
    W arkuszu „Słupy” mam trzy tabele:
    – Tabela Nr1 (zakres KOLUMN A:Z)
    - Tabela Nr2 (zakres kolumn AB:AZ)
    - Tabela Nr3 (zakres kolumn BC:EI)
    Tabela Nr1 służy do wpisywania informacji o danym kontrakcie (nazwa budowy, oznaczenie elementów, ilości itd.). Stale się rozrasta w dół – dochodzące kontrakty dopisywane są pod ostatnim wierszem. Jeśli w obrębie danego tematu dochodzi element dostawiany jest wiersz pod tym tematem i element wpisywany jest w kolejności rosnącej (np. jeśli w temacie Warszawa KOME dojdzie element S-7 wstawiony zostanie wiersz pod S-6).
    Tabela Nr2 to forma harmonogramu, mamy daty, i w zależności od ilości forma (wiersz 3) w obrębie danej budowy rozpisujemy produkcję poszczególnych elementów na dni. Nowa budowa jest dostawiana na końcu itd.
    W tej tabeli pojawiają się kolory. Kolor szary oznacza że element został wykonany ale nie nadaje się do wysyłki. Kolor zielony oznacza że możemy element wysyłać. W kolumnach Q-T jest funkcja „zabetonowane” która zlicza komórki po kolorze szarym.
    Rozpisując elementy w Tabeli Nr1 muszę mieć kontrolę nad tym czy wszystkie elementy są rozpisane (formuły w kolumnach J,K), oraz czy są wyprodukowane (formuły i funkcja „wyprodukowane” w kolumnach L i M). W tabeli Nr2 w kolumnie AM zlicza się dzienna objętość wszystkich elementów zaplanowanych na ten dzień – do tego zadania służy mi tabela nr 3 (transponowanie danych z tabeli Nr1 oraz funkcja Licz.Jeżeli). Niestety działa to średnio ponieważ nie umiem zautomatyzować zakresów. Za każdym razem kiedy element przesuwa się w planie jest „ściągany” ręcznie na dół na kolejny dzień co powoduje złe sumowanie dziennych objętości. Nie mówiąc już o dostawianiu kolumn w tabeli Nr2 – musze ręcznie zaznaczać zakresy rozbudowując tabelę Nr3…..Teraz jeszcze muszę liczyć ilość kg stali w elemencie w rozbiciu na średnice…..i to dowolnie od wybranego zakresu (jeden tydzień, dwa, trzy itd. – zależnie od wyboru użytkownika).
    Problemy do rozwiązania:
    Tabela1:
    - muszę mieć kontrolę nad tym co rozpisane, powinno zliczać się to z zakresu w tabeli 2 (w obrębie danego tematu, elementy dla różnych tematów mają te same oznaczenia ) – to co jest zrobione może zostać, chyba że ktoś widzi coś lepiej? Może ten wybór zakresów da się zautomatyzować?
    Tabela2:
    - sama tabela ma formę kalendarza – czy da się go zautomatyzować czyli dostawiam kolejny tydzień, miesiąc, pojawiają się daty nrtygodnia, na czerwono niedziele itd.?
    - ilości Vb i kg stali dla poszczególnych dni powinny się sumować ze wszystkich tematów,
    - dodatkowo czy jest taka możliwość ze użytkownik wybiera sobie zakres dat np. interesuje mnie tydzień 51 i 52 i zsumowane ilości vb oraz kg stali w podziale na średnice, oczywiście te zakresy muszą być dowolne, (arkusz Podgląd ),
    - ostatni problem to czy widzi ktoś możliwość wyboru określonego tematu i pokazania tylko jego, chodzi o to że chcę klientowi z obiektu Warszawa KOME pokazać tylko jego temat, czyli wybieram Warszawa KOME i generuje mi np. do innego pliku czy pdf zakres tabeli 1 i tabeli 2 tylko dla Warszawa KOME.
    - podsumowanie stali i vb: w Arkuszu „Pogląd” w komórce B3 wybieramy kalendarz. Po wyborze daty zlicz się Ilość słupów i objętość z danego dnia. W kolumnie D są nazwy innych elementów (Biegi schodowe, Balkony itd…) dlatego że docelowo Harmonogram będzie zawierał kolejne zakładki z tymi elementami – na razie staram się ogarnąć jeden asortyment (słupy).
  • #7
    kinggustav
    Level 26  
    Niepokoją mnie takie teksty "Stale się rozrasta w dół". A jak dojdzie do końca arkusza to co? Kupimy nową wersję Excela? Czy rzeczywiście takie są potrzeby?
    Czy nie warto już teraz pomyśleć o jakiejś retencji/archiwizacji? Praktyka pokazuje (wejście RODO) jak trudne to zadanie gdy już nazbiera się dużo danych przy braku polityki retencji. Ludzie się zwyczajnie boją usuwać dane, bo nie wiedzą (nie mają pewności) czy one nie są do czegoś niezbędne. :)
  • #8
    sothis666
    Level 9  
    Tak ten harmonogram jest co jakiś czas archiwizowany, tzn. po skończonym temacie w odstępie powiedzmy miesiąca, dwóch zostaję "recznie" przenoszony do tzw. Archiwum ( inny plik excela). Mówiąc że się rozrasta miałem na myśli że każdego dnia dochodzi coś nowego do dopisania.
  • #9
    kinggustav
    Level 26  
    Super, rozumiem że za jakiś czas to "ręcznie" też zautomatyzujesz. :)
  • #10
    sothis666
    Level 9  
    kinggustav wrote:
    Super, rozumiem że za jakiś czas to "ręcznie" też zautomatyzujesz. :)

    Jak na razie nie mam pomysłu jak ruszyć z tym co jest 😀...
  • #11
    kinggustav
    Level 26  
    To zależy czy masz czas, zakładam że masz. Rób po kolei, to co już umiesz. Używaj i zobacz czy jest łatwiej. Potem poznawaj kolejne możliwości VBA i rób kolejne kawałki. Jeżeli wymyślisz lepsze rozwiązanie to fajnie, ale przetestuj je na boku pamiętając, że "lepsze jest wrogiem dobrego". Po pewnym czasie się nauczysz i ... zdziwisz się ile w tym prymitywnym VBA można.
    Jak zupełnie nie wiesz jakie obiekty trzeba użyć, albo o co zapytać to zarejestruj sobie makro, które to robi, obejrzyj je i będziesz wiedział. Przy okazji zobaczysz jak głupio zapisuje kod rejestrator. To nie jest wzór do naśladowania. :)