Mam pilną sprawę. Sytuacja wygląda tak: sezon trwa od kwietnia(4) do marca(3) i muszę napisać sobie formułę która policzy należność w aktualnym miesiącu(dziś), lub zwróci zero(0) jeśli jest nadpłata, uwzględniając wymiar jaki obowiązuje (ktoś może w całym sezonie mieć np tylko 4 miesiące do opłacenia).
Zafiksowałem się z ifami maksymalnie, mam coś takiego (ale to nie działa):
=JEŻELI
(
MIESIĄC(DZIŚ())<=3;
JEŻELI
(
(MIESIĄC(DZIŚ())+9)>=F4;
JEŻELI(F4-((MIESIĄC(DZIŚ())+9)*$L$4)<0;0;(F4-(MIESIĄC(DZIŚ())+9))*$L$4);
0
);
JEŻELI
(
F4-MIESIĄC(DZIŚ())<0;
JEŻELI(F4-((MIESIĄC(DZIŚ())-3)*$L$4)<0;0;(F4-(MIESIĄC(DZIŚ())-3))*$L$4);
0
)
F4 to wymiar jaki obowiązuje
L4 to należność za każdy miesiąc
Może istnieje jakieś eleganckie rozwiązanie (bez tych funkcji warunkowych), ale ja od rana już wyczerpałem pokłady myślenia Ewentualnie proszę o wskazanie w którym miejscu tutaj popełniłem błąd bo formuła zwraca ciągle zero(0) a ja nie mogę tego odłożyć na jutro i na spokojnie podejść jeszcze raz do problemu.
A mógłbyś podać przykład dla jakiś 3, 4 wartości, co dokładnie powinno się zliczać. Po formule widzę, że jeżeli stosujesz raz w prawdzie, raz w fałszu i nie zachowujesz konsekwencji w warunkach. Dlatego przykład pomoże mi zrozumieć, co tak naprawdę chcesz osiągnąć. Na razie zmieniłem formułę tak, ale też nie do końca pokazuje chyba to, co powinna. Wartości pokazuje dla F4 w wartości 1 i 2. Podejrzewam, że coś nie tak jest z warunkami nierówności.
A jest szansa, byś pliczek zapisał jako xls? Niestety portablowa wersja Libre Office’a wywala się w czasie otwierania pliku. Excel co prawda plik otwiera, ale usuwa z niego wszystkie funkcje. Podobnie działa konwertowanie onlie pliku z ods do xls - formuły są wycinane i zastępowane wyrażeniami #REF.
JEŻELI(MIESIĄC(DZIŚ())>=4;MIESIĄC(DZIŚ())-3;JEŻELI(MIESIĄC(DZIŚ())<4;MIESIĄC(DZIŚ())+9;0)) - tutaj wykonujemy przesunięcie - czyli jeżeli aktualny miesiąc to miesiąc większy bądź równy kwietniowi, otrzymamy wartość pomniejszoną o 3; w przypadku gdy funkcja dziś() wskaże styczeń, luty bądź marzec, formuła zwróci odpowiednio wartości 10, 11 i 12,
MIN(JEŻELI(MIESIĄC(DZIŚ())>=4;MIESIĄC(DZIŚ())-3;JEŻELI(MIESIĄC(DZIŚ())<4;MIESIĄC(DZIŚ())+9;0));F5) - wybieramy minimum z wartości wymiaru bądź tego, co wskaże formuła z dziś. Dzięki temu nie przekroczymy w naliczaniu należności zdefiniowanych w kolumnie F,
MIN(JEŻELI(MIESIĄC(DZIŚ())>=4;MIESIĄC(DZIŚ())-3;JEŻELI(MIESIĄC(DZIŚ())<4;MIESIĄC(DZIŚ())+9;0));F5)*$L$4 - tutaj tylko dodajemy mnożenie o wartość należną za miesiąc,
JEŻELI(DZIŚ()>=DATA(2015;4;1);‘funkcja powyżej’;0) - tutaj definiujemy datę graniczną, od której zaczynają działać przeliczenia - póki formuła dziś nie zwróci dnia pierwszego kwietnia 2015 roku, w danych będą pojawiać się tylko zera.
Zmiany wprowadziłem w pliku i zawiesiłem na serwerze pod linkiem: http://przeklej.org/file/CFUcnS/mnozenie.z.warunkiem.xls
Dodatkowo w komórce G4 umieściłem nieco zmienioną formułę - zamiast elementu dziś() mamy odwołanie do komórki G2, by łatwiej można było zmieniać daty sprawdzając, czy wszystko liczy się tak, jak w założeniu. Wydaje mi się, że jest ok.