Jak napisać taką funkcję ? Excel


(Kontoforspam) #1

Witam. Nie wiedziałem w jakim dziale napisać ale myślę, że tutaj może się znaleźć ktoś kto może mi pomóc. Potrzebuję napisać funkcję, która za prognozuje mi zapotrzebowanie na odzież roboczą w roku 2015 (załączam plik w celu objaśnienia). Mam kwartałami tam podane kto kiedy i ile brał danego typu odzieży i co jaki czas mu się należy co 12 msc, co 2 okresy zimowe, 3 , 36 msc, do zużycia itd. (chociaż nie zawsze ludzie z zakładu pobierają należącą im się odzież ale chciałbym żeby program policzyć wg. tego co się należy) I żeby mi excel policzył  teraz pytanie czy jest to w ogóle wykonalne w takim programie jak excel ? Np ktoś wziął w 3 kwartale 2014 roku dany asortyment i teraz żeby program policzył, że w 2015 też mu się należy w 3 kwartale ponieważ należy mu się co 12 msc itd. Mam jeszcze drugie pytanie, otóż w 3 arkuszu są podane imiona. nazwiska ( ze względu na ochronę danych wykasowane tak samo w arkuszu numer 2), stanowiska na jakich się znajdują oraz jaki to jest dział danego stanowiska w skrócie np PP, EE itd. Czy istnieje możliwość, żeby excel odpowiednio automatycznie dopasował stanowiska oraz odpowiedni dział do danego imienia i nazwiska i wstawił je w odpowiednie komórki w arkuszu numer 2 ? Dziękuje z góry za pomoc. 

 

ADRES PLIKU XLS :  http://www.sendspace.pl/file/7ba630b637b6f430990620c


(Grzelix) #2

Jako pierwsze to poradziłnym w ramach samodoskonalenie przeczytać jedną książkę o relacyjnych bazach danych. Myślę że po jednej lekturze potrafiłbyś duże lepiej uporządkować  a potem zarządzać tego typu dannymi. Byś Sql server jest nieco za ciężki ale użycie MS accessa powinno spokojnie wystarczyć do takich zadań. I zapewniam że trud opanowania tego zagadnienia szybko się spłaci jeśli w pracy masz do czynienia z takim arkuszami excela.

 

 

Wracając do tematu. Po zgrubnej analizie twojego dokumentu proponuję taką funkcję (pseudokod:

IF E9 = 12
then suma(W9:Z9) // ewentualnie max z poprzednich lat albo średnia. - avg(suma(O9:R9), suma(S9:V9), suma(W9:Z9))
else IF E9 = 24 // to okres za lata 2011, 2013
then suma(S9:V9)
else IF E9 = 36
then suma(O9:R9)

żeby powyższa funckja działa musisz jeszce ustalić co dla okresów, i pełnego zużycia oraz ujednolić zapisy żeby nie było 36 i 36msc.

 

Kopiowanie działu jest możliwe przy użyciu makra (może funkcji nie jestem expertem w excelu) ale widzę tu kilka spraw które popsuć cały koncept:

  1. W akrusz 3 imię i nazwisko jest w osobnych polach, w akruszu 2 w jednym - jeśli w arkuszu 2 będzie:

   a) inny separtor

   b) inna liczba spacji

   c) różnica polskie znaki brak polskich znaków

   d) albo będzie dwóch pracowników o takich samych danych imię i nazwisko

To wszystko będzie prowadzić do błędu lub nie uzupełnienia pola.

 

Dane typu imię i nazwisko nie jest poprawnym identyfkatorem, Dla ludzi do takiego celu można użyć no nr PESEL.


(madoch) #3

Odnośnie pytania 2, funkcja "WYSZUKAJ.PIONOWO" byłaby zapewne pomocna.

Ale musisz mieć wartość unikalną dla każdego rekordu . A imię i nazwisko nie jest unikalne. Gdybyś miał np. PESEL to zapewne rozwiązałoby to sprawę.