Si cum era sa ratez asemenea provocare .... am downloadat fisierul pus la dispozitie de autor si m-am pus pe treaba. M-am chinuit cam 20 de minute pe urma am facut o pauza si l-am dat gata. Rezolvarea mea este una care nu foloseste functii prea complexe, un alt utilizator a postat o rezolvare chiar misto :D. Dar toate la timpul lor si s-o luam ca la scoala:
Datele problemei
Dupa cum am spus mai sus, provocarea este crearea formulei care calculeaza programul de plata pentru un reprezentant de vanzari. Dar cum era de asteptat sunt si conditii pentru a-si primi veniturile:
- Trebuie sa castige cel putin 200 dolari inainte de a fi platit;
- Trebuie sa existe o diferenta de 7 zile intre platile succesive.
Rezolvarea
Asa cum am spus si mai sus, eu am ales sa ma folosesc de coloana ajutatoare pusa la dispozitie. Coloana am denumit-o Flag (coloana E) si am folosita ca sa numar de plati care s-au efectuat pana la data curenta:
=COUNTIF($D$6:D6,">0")In formula de mai sus se numara celulele de pe coloana D (pana in ziua curenta) in care valorile sunt mai mari ca zero.
Pentru a afla programul de plata a comisionalor in functie de cele doua conditii prezentate mai sus am folosit urmatoarea formula:
=IF(SUM($D$5:D5)=0,IF(AND(SUM($C$5:C6)>=$H$23,(B6-$B$6)>=6), SUM($C$5:C6),""),IF(AND((SUM($C$6:C6)-SUM($D5:D$6))>=$H$23,(B6-INDEX($B$5:B6,MATCH(COUNTIF($D$5:D5,">0"),$E$5:E5,0)-1,1))>=6), SUM($C$6:C6)-SUM($D5:D$6),""))
Am ales sa separ prima plata de celelalte pentru ca am gandit-o ca un caz separat. De aceea primul if chiar asta face, astfel folosim al doilea if IF(AND(SUM($C$5:C6)>=$H$23,(B6-$B$6)>=6),SUM($C$5:C6),"") pentru a verifica cele doua conditii prezentate in datele problemei. Daca ambele sunt indeplinite atunci in aceasta celula se va trece suma comisioanelor de la inceputul tabelului pana la data curenta, daca nu se trece nimic. daca suma platitlor efectuate de la inceputul tabelului pana la data anterioara zilei curente este zero.
Pentru cazul in care au fost efectuate plati anterioare, verificam prin al treilea if IF(AND((SUM($C$6:C6)-SUM($D5:D$6))>=$H$23,(B6-INDEX($B$5:B6,MATCH(COUNTIF($D$5:D5,">0"),$E$5:E5,0)-1,1))>=6), SUM($C$6:C6)-SUM($D5:D$6),"") daca diferenta dintre suma comisioanelor pana in aceea zi si suma platilor efectuate pana in aceea zi este de cel putin 200 si daca diferenta dintre diferenta dintre data curenta şi data in care s-a efectuat plata anterioara este de cel putin 6. Pentru a gasi data platii anterioare am folosit index si coloana ajutatoare E. La fel ca mai sus cand ambele conditii sunt indeplinite se va trece diferenta dintre suma comisioanelor inclusiv ziua curenta si suma platilor efectuate pana la ziua anterioara celei curente.
Daca doriti sa intelegi mai bine rezolvarea mea puteti sa downloadati fisierul de la urmatorul link: commision-payment-schedule - solved.xlsx.
Daca doriti sa gasiti o noua metoda de rezolvarea puteti sa downloadati fisierul fara rezolvarea din postul de pe chandoo sau de la urmatorul link: Click here to download the homework problem workbook. Daca veniti cu o rezolvarea noua va rog sa impartiti solutia cu ceilalti prin comentariile de la acest post.
0 comentarii:
Trimiteți un comentariu