logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[EXCEL] - Jak obliczyć zapas na podstawie dni roboczych i sprzedaży tygodniowej?

pietaszeq1 04 Paź 2010 15:09 5362 6
REKLAMA
  • #1 8582419
    pietaszeq1
    Poziom 10  
    Posty: 17
    Ocena: 3
    PostWysłany: Pon Paź 04, 2010 12:55 pm Temat postu: [EXCEL] Wyliczenia na podstawie dni roboczych w tygodniu zapasu w dniach :) Odpowiedz z cytatem Pisownia
    Witam,

    Mam taki trochę skomplikowany problem. Potrzebuje wyliczyć zapas dla asortymentu na np 12 dni (jest to zmienna) wg sprzedaży podanej na tygodnie.

    Np: zapas na 12 dni to sprzedaż z tydzień 1=100 (5 dni roboczych), tydzień 2 = 120 (4 dni robocze) i tydzień 3 = 100 (5 dni roboczych): czyli 100+120+(100/5*3) = 280. Pytanie moje brzmi jak napisać formułę aby dla zmiennej ilość dni zapasu liczyła zapas na podstawie sprzedaży podanej w tygodniach uwzględniając ilość dni roboczych w danym tygodniu?

    W załączniku załączam plik w których bp chciał bym wyliczyć zapas dla 42 tygodnia, dodam jeszcze ze jest to zapas na koniec 43 tygodnia także zapas na np 12 dni powinien być liczony ze sprzedaży z 43 44 i 45 tygodnia.
    Wynikiem powinno w tym przypadku być 963,5

    Bardzo proszę o pomoc
    Załączniki:
    • przykładzapas.xls (49 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 8583750
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Hmm, widzę tu trochę kombinacji. Należałoby: dodawać dni z kolejnych tygodni aż do uzyskania liczby większej niż dni zapasu gdzie wynikiem będzie ilość dni bez ostatniego składnika. Następnie obliczyć "resztę". Produkcję "nadmiarowego" tygodnia podzielić przez dni robocze dla tego tygodnia i pomnożyć przez uzyskaną wcześniej "resztę". Teraz wystarczy dodać otrzymany wynik do "pełnych" tygodni...

    Potrzebne byłyby ze 3 kolumny pomocnicze...

    A nie prościej byłoby zamknąć wszystkie obliczenia w funkcji niestandardowej? Tyle tylko, że nie mógłbyś zmieniać układu w arkuszu. Na wstawianie wierszy od 7 w dół sposób by się znalazł...
    Cells.Find(what:="Dni robocze").Row
    definowałby pierwszy wiersz tabelki
  • REKLAMA
  • #3 8583854
    pietaszeq1
    Poziom 10  
    Posty: 17
    Ocena: 3
    no napewno było by łatwiej tylko jestem zielony z vba i nie wiem dokońca jak używać funkcji niestandardowych. czy mogl bys mnie jakos nakierować?
  • Pomocny post
    #4 8583919
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Function zapas(tydz, wiersz)
    Application.Volatile 'Excel 2k7
    'Application.Volatile = True 'Excel 2k
    
    'trochę tu latania po arkuszu :)
    'szukam wiersza zawierającego tekst
    wt = Cells.Find(what:="Dni robocze", lookat:=xlWhole).Row
    'określam pierwszą kolumnę z wielkością produkcji / zółta tabelka
    zKol = tydz - Range("C5") + 4
    'kolumna z ilością dni przesunięta jest o 1 w prawo / błekitna
    dKol = zKol + 1
    'ile dni zapasu z zielonej tabelki
    days = Cells(wiersz, dKol + 8)
    
    For i = 0 To 8 'dodajemy z max 8 tygodni, więcej chyba nie trzeba
        ileDni = ileDni + Cells(wt + 1, dKol + i)
        prod = Cells(wiersz, dKol - 1 + i)
        If ileDni >= days Then
            dziel = Cells(wt + 1, dKol + i)
            Exit For
        End If
        ileZap = ileZap + prod
    Next
    
    mnoz = days - ileDni + dziel
    zapas = ileZap + ((prod / dziel) * mnoz)
    End Function
    Wklej do modułu standardowego (Edytor VB>Insert>Module). Używasz jak "zwykłej" funkcji Excela. Wymaga dwóch argumentów: Nr tygodnia, który można pobrać z komórki oraz Nr wiersza w postaci liczby lub funkcji (jak na obrazku).

    [EXCEL] - Jak obliczyć zapas na podstawie dni roboczych i sprzedaży tygodniowej?

    Jak już pisałem, nie można zmieniać układu w arkuszu. Dopuszczalne jedynie jest wstawianie/usuwanie wierszy od 7 w dół. Sprawdź, czy dobrze liczy.

    Edit: Zmieniłem kod. Do listy argumentów dołożyłem jeszcze Nr wiersza, żeby szło kopiować w dół (gdzie miałem głowę)...
  • REKLAMA
  • #5 8585231
    pietaszeq1
    Poziom 10  
    Posty: 17
    Ocena: 3
    Jesteś WIELKI, obliczenia są jak najbardziej poprawne:) mam tylko jeszcze jeden problem, potrzebuję trochę zmienić arkusz to znaczy dodać trzy kolumny przed sprzedażą i jak zmieniam

    zKol = tydz - Range("C5") + 4
    na
    zKol = tydz - Range("F5") + 4

    to nie wylicza zapasu w tygodniach 40 41 42 dopiero zaczyna liczyć dalej. mogę Cię jeszcze prosić o to?

    Wielkie dzięki
  • REKLAMA
  • Pomocny post
    #6 8587066
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 658
    Zmieniłem trochę. Punktem odniesienia dla działania całej funkcji jest teraz adres komórki z tekstem "Dni robocze".
    Function zapas(tydz, wiersz)
    Application.Volatile 'Excel 2k7
    'Application.Volatile = True 'Excel 2k
    
    wt = Cells.Find(what:="Dni robocze", lookat:=xlWhole).Row
    wk = Cells.Find(what:="Dni robocze", lookat:=xlWhole).Column
    zKol = tydz - Cells(5, wk) + 7
    dKol = zKol + 1
    days = Cells(wiersz, dKol + 8)
    
    For i = 0 To 8
        ileDni = ileDni + Cells(wt + 1, dKol + i)
        prod = Cells(wiersz, dKol - 1 + i)
        If ileDni >= days Then
            dziel = Cells(wt + 1, dKol + i)
            Exit For
        End If
        ileZap = ileZap + prod
    Next
    
    mnoz = days - ileDni + dziel
    zapas = ileZap + ((prod / dziel) * mnoz)
    End Function
    Przy dodawaniu kolumn kluczowa jest zmienna zKol, a konkretnie ostatnia cyfra w tej linii. Porównaj z poprzednią...
  • #7 8587400
    pietaszeq1
    Poziom 10  
    Posty: 17
    Ocena: 3
    Działa rewelacyjnie, WIELKIE DZIĘKI

Podsumowanie tematu

✨ W dyskusji poruszono problem obliczania zapasu asortymentu na podstawie dni roboczych i tygodniowej sprzedaży w programie Excel. Użytkownik potrzebował formuły, która uwzględniałaby zmienną liczbę dni zapasu oraz sprzedaż z kilku tygodni. Odpowiedzi zawierały propozycje użycia funkcji niestandardowych w VBA, które umożliwiłyby automatyczne obliczenia. Użytkownik otrzymał pomoc w stworzeniu funkcji, która zlicza dni robocze i oblicza zapas na podstawie danych z arkusza, a także dostosował kod do zmiany układu arkusza. Ostatecznie, rozwiązanie działało poprawnie, a użytkownik wyraził wdzięczność za pomoc.
Wygenerowane przez model językowy.
REKLAMA