Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
Zamknięty przez: umiejead
07-04-2021, 00:16
Lista rozwijalna - wielki problem
Autor Wiadomość
kingtlen 
Exceloholic



Pomógł: 1 raz
Posty: 107
Wysłany: 03-04-2021, 21:34   Lista rozwijalna - wielki problem

Witam wszystkich serdecznie.

Kombinuje już któryś dzień i nic nie mogę stworzyć. W pliku jest arkusz o nazwie "Raport" gdzie rozliczam nazwijmy to dzienną produkcję, a z listy rozwijalnej wybieram produkt i poźniej ręcznie wpisuję ilość, którą wytworzyłem. Kolejnym arkuszem jest arkusz o nazwie baza w którym deklaruję jakie składniki wchodzą w danym wyrób na 1000 litrów. Teraz chciałbym aby po wybraniu wyrobu np. "napój premium" pobierał on z arkuszu "baza" zużycie surowców na 1000 litrów i wpisywał w daną kartę określonego materiału w dniu zgodnym z datą w arkuszu "raport". Czyli jeśli w dniu 03.04.2021 wyprodukowałem 2000 litrów napoju premium to z automatu rozliczy mi sie w konkretnych kartach na konkretnym dniu (68 kg jabłek, 14 kg bananów, 28 kg mango). W chwili obecnej wpisałem te wartości ręcznie (komórka zaznaczona na niebiesko). Jedyną rzeczą, którą udało mi się opanować to arkusz "rozliczenie materiałów" który pobiera dane dotyczące zużycia poszczególnych surowców w określone dni w zależności od daty. Wiem że to może być trudne ale z góry dziękuję za okazaną pomoc. Sam sobie nie poradzę :niee . Zdrowia życzę wszystkim.

Rozliczenie wer.2.rar
Pobierz Plik ściągnięto 8 raz(y) 15.99 KB

ID posta: 403153 Skopiuj do schowka
 
 
Plantator
Starszy Forumowicz


Wersja: Win Office 365
Pomógł: 7 razy
Posty: 38
Wysłany: 04-04-2021, 09:19   

Rozwiązanie z pomocą makra.

Rozliczenie wer.2.1.xlsm
Pobierz Plik ściągnięto 7 raz(y) 30.74 KB

ID posta: 403162 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2521 razy
Posty: 8407
Wysłany: 04-04-2021, 09:26   

Zerknij do załącznika.
Przerobiłem Twoje "ala" tabelki, na prawdziwe tabele.
Możesz to zobaczyć w Menedżerze Nazw.

Zasady działania.
W arkuszu "Baza" możesz dodawać kolejne składniki napojów.
Możesz też dodawać kolejne napoje, wtedy lista poprawności danych umieszczona w arkuszu "Raport" sama się zaktualizuje.

Nie musisz już na wyrost wstawiać kolejnych dat do arkuszy z produktami(składnikami) - zadba o to makro.
Jeśli uruchomisz makro w jednym dniu kilku krotnie , to produkty te będą sumowane.
Testuj.

Rozliczenie wer.2.xlsm
Pobierz Plik ściągnięto 13 raz(y) 41.54 KB

_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 403163 Skopiuj do schowka
 
 
kingtlen 
Exceloholic



Pomógł: 1 raz
Posty: 107
Wysłany: 04-04-2021, 10:08   

Plantator i Marecki dziękuje za poświęcony czas. Marecki to co udało się tobie zrobić to mistrzostwo świata. Jesteś wielki jeśli chodzi o Excela mój umysł nie do końca ogarnia to co zrobiłem ale poradzę sobie. Na chwilę obecną zauważyłem problem z rozliczeniem poszczególnych składników w zależności od produkcji. I tak np: w arkuszu raport na dzisiejszym dniu mam że wyprodukowałem np.
Napój premium 100 litrów
Napój extra 100 litrów
Zgodnie z tym co mam w bazie na wyprodukowanie 100 litrów napoju premium będę potrzebował
3,4 kg jabłek
0,7 kg bananów
1,4 kg mango
Natomiast na wyprodukowanie 100 litrów napoju extra
1,5 kg jabłek
0,3 kg bananów
Czyli w arkuszach każdego z surowców powinienem mieć że jabłek na dniu dzisiejszym zużyłem 4,9 kg, bananów 1 kg oraz 1,4 kg mango. Raport planuje sporządzać raz dziennie i dane w arkuszu "raport" będę wpisywał raz dziennie. Dziękuję i Zdrowych Świąt dla Was
ID posta: 403164 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2521 razy
Posty: 8407
Wysłany: 04-04-2021, 10:17   

kingtlen napisał/a:
Czyli w arkuszach każdego z surowców powinienem mieć że jabłek na dniu dzisiejszym zużyłem 4,9 kg, bananów 1 kg oraz 1,4 kg mango.
No to tak jest. Zmień datę w arkuszu "Raport"w C1 na 06.04.2021 i uruchom makro.
_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 403165 Skopiuj do schowka
 
 
kingtlen 
Exceloholic



Pomógł: 1 raz
Posty: 107
Wysłany: 04-04-2021, 16:08   

Marecki wydaje się wszystko ok. Mam jednak jeszcze małą prośbę fajnie to działa, że po kliknięciu z automatu dodaje się wiersz z datą w danym surowcu i pojawia się zejście np. jabłek. Mam pytanie czy można tak to zrobić, że po dodaniu z automatu tego wiersza automatycznie tez by generował się stan. Czy mógłbyś zerknąć? Bardzo mi i tak pomogłeś. Dziękuję z góry

Rozliczenie wer.22.xlsm
Pobierz Plik ściągnięto 5 raz(y) 40.27 KB

ID posta: 403172 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2521 razy
Posty: 8407
Wysłany: 04-04-2021, 18:15   

Formuła
Kod:
=B2-C2+D2
nie będzie odzwierciedlała faktycznego stanu, bo pomija ostatni wpis(rozchód).
Zamieniłem formułę na taką
Kod:
=SUMA([Przychód])-SUMA([[Rozchód ]])
teraz stan reguluj sobie w kolumnie "Przychód".
Wpisz w każdej tabeli w D1 wartość wartość początkowego stanu.
Zamień kod na taki:
Kod:
Sub Aktualizuj()
Dim el As Variant
Dim i As Byte
Dim col As Byte
Dim poz_nap As Long
Dim poz_data As Variant
Dim MyDate As Long
Dim ilosc As Double
Dim LRow As Long


    MyDate = Sheets("Raport").Range("C1").Value
    col = Sheets("Baza").ListObjects("Tabela_Napoje").ListColumns.Count - 1

    For Each el In Range("Tabela_Raport[Nazwa napoju]")
        ilosc = el.Offset(, 1).Value / 1000
        poz_nap = Application.Match(el, Range("Tabela_Napoje[Napoje]"), 0) + 2

        For i = 1 To col
            If VBA.Len(Sheets("Baza").Cells(poz_nap, i + 1).Value) > 0 Then

                With Sheets(Sheets("Baza").Cells(2, i + 1).Value)
                    poz_data = Application.Match(MyDate, .Columns(1), 0)
                    If IsError(poz_data) Then
                        If Len(.Cells(2, 1).Value) = 0 Then
                            .Cells(2, 1).Value = CDate(MyDate)
                            .Cells(2, 2).Formula = "=SUM([Przychód])-SUM([[Rozchód ]])"
                            .Cells(2, 3).Value = ilosc * Sheets("Baza").Cells(poz_nap, i + 1).Value
                        Else
                            LRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                            .Cells(LRow, 1).Value = CDate(MyDate)
                            .Cells(LRow, 2).Formula = "=SUM([Przychód])-SUM([[Rozchód ]])"
                            .Cells(LRow, 3).Value = ilosc * Sheets("Baza").Cells(poz_nap, i + 1).Value
                        End If
                    Else
                        If poz_data = 2 Then
                            .Cells(poz_data, 3).Value = ilosc * Sheets("Baza").Cells(poz_nap, i + 1).Value + .Cells(poz_data, 3).Value
                        Else
                            .Cells(poz_data, 3).Value = ilosc * Sheets("Baza").Cells(poz_nap, i + 1).Value + .Cells(poz_data, 3).Value
                            .Cells(poz_data, 2).Formula = "=SUM([Przychód])-SUM([[Rozchód ]])"
                        End If
                    End If
                End With
            End If
        Next i
    Next el

End Sub
_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 403173 Skopiuj do schowka
 
 
kingtlen 
Exceloholic



Pomógł: 1 raz
Posty: 107
Wysłany: 04-04-2021, 19:00   

Marecki przerobiłem plik tak jak prosiłeś - wszystko działa ok. Czy możliwe jest jednak zrobienie tak by stan na każdy dzień był właściwy. W chwili obecnej podany jest we wszystkich komórkach stanu ostatnia jego wartość?

Rozliczenie wer.221.xlsm
Pobierz Plik ściągnięto 6 raz(y) 41.16 KB

ID posta: 403174 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2521 razy
Posty: 8407
Wysłany: 04-04-2021, 20:41   

Testuj:
Kod:
Sub Aktualizuj()
Dim el As Variant
Dim i As Byte
Dim col As Byte
Dim poz_nap As Long
Dim poz_data As Variant
Dim MyDate As Long
Dim ilosc As Double
Dim LRow As Long
Dim ShName As Worksheet


    MyDate = Sheets("Raport").Range("C1").Value
    col = Sheets("Baza").ListObjects("Tabela_Napoje").ListColumns.Count - 1

    For Each el In Range("Tabela_Raport[Nazwa napoju]")
        ilosc = el.Offset(, 1).Value / 1000
        poz_nap = Application.Match(el, Range("Tabela_Napoje[Napoje]"), 0) + 2

        For i = 1 To col
            If VBA.Len(Sheets("Baza").Cells(poz_nap, i + 1).Value) > 0 Then
                Set ShName = Sheets(Sheets("Baza").Cells(2, i + 1).Value)
               
                With ShName
                    poz_data = Application.Match(MyDate, .Columns(1), 0)
                    If IsError(poz_data) Then
                        If Len(.Cells(2, 1).Value) = 0 Then
                            .Cells(2, 1).Value = CDate(MyDate)
                            .Cells(2, 3).Value = ilosc * Sheets("Baza").Cells(poz_nap, i + 1).Value
                            .Cells(2, 2).Value = .Cells(2, 4).Value - .Cells(2, 3).Value
                        Else
                            LRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                            .Cells(LRow, 1).Value = CDate(MyDate)
                            .Cells(LRow, 2).Formula = Application.Sum(.Cells(2, 4).Resize(LRow - 1, 1).Value) - Application.Sum(.Cells(2, 3).Resize(LRow - 1, 1).Value)
                            .Cells(LRow, 3).Value = ilosc * Sheets("Baza").Cells(poz_nap, i + 1).Value
                        End If
                    Else
                        If poz_data = 2 Then
                            .Cells(poz_data, 3).Value = ilosc * Sheets("Baza").Cells(poz_nap, i + 1).Value + .Cells(poz_data, 3).Value
                        Else
                            .Cells(poz_data, 3).Value = ilosc * Sheets("Baza").Cells(poz_nap, i + 1).Value + .Cells(poz_data, 3).Value
                            .Cells(poz_data, 2).Value = Application.Sum(.Cells(2, 4).Resize(poz_data - 1, 1).Value) - Application.Sum(.Cells(2, 3).Resize(poz_data - 1, 1).Value)
                        End If
                    End If
                End With
            End If
        Next i
    Next el

End Sub
_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 403176 Skopiuj do schowka
 
 
kingtlen 
Exceloholic



Pomógł: 1 raz
Posty: 107
Wysłany: 04-04-2021, 22:42   

Marecki makro jest ok i super działa. Ostatnia rzecz :mrgreen: z jaką mam problem i chciałbym to zmienić to sama zasada działania makra. Jeśli w raport wpiszę ilości np. że napoju premium wykonałem 1000 litrów i uruchomię makro poprzez naciśnięcie aktualizuj to wszystkie niezbędne zejścia surowców zostaną wstawione w określone pola - i to jest ok. Jednak jeśli po chwili stwierdzę, że tego napoju wyprodukowałem jednak nie 1000 litrów a np. 680 i poprawię i wcisnę aktualizuj to rozchód poszczególnych surowców zrobi mi się tak jakbym wyprodukował 1680 kg. Ja wolałbym jednak tak, że po naciśnięciu aktualizuj będzie mi wrzucało tylko zejścia produktów dla ostatniej wartości którą wpisałem w raport. Z góry dziękuje wielki człowieku.

Rozliczenie wer.221.rar
Pobierz Plik ściągnięto 5 raz(y) 35.34 KB

ID posta: 403177 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2521 razy
Posty: 8407
Wysłany: 05-04-2021, 06:27   

Teraz nie mam dostępu do kompa, ale wystarczy chyba usunąć z kodu
Kod:
+ .Cells(poz_data, 3).Value
_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 403179 Skopiuj do schowka
 
 
kingtlen 
Exceloholic



Pomógł: 1 raz
Posty: 107
Wysłany: 05-04-2021, 10:45   

Marecki usunąłem z makra to o czym piszesz i niestety makro przestało działać, nie wrzuca wartości zużyć do poszczególnych arkuszy konkretnego surowca.
  
ID posta: 403182 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2521 razy
Posty: 8407
Wysłany: 05-04-2021, 11:50   

Pokaż ten kod po usunięciu.
_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 403185 Skopiuj do schowka
 
 
Plantator
Starszy Forumowicz


Wersja: Win Office 365
Pomógł: 7 razy
Posty: 38
Wysłany: 05-04-2021, 12:02   

Coś poprawiłem, przetestuj.

Rozliczenie wer.222.xlsm
Pobierz Plik ściągnięto 3 raz(y) 42.61 KB

ID posta: 403186 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2521 razy
Posty: 8407
Wysłany: 05-04-2021, 12:19   

Pisałem że nie mam dostepu do kompa, dlatego prosiłem o kod.
_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 403187 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe