LibreOffice:Calc mnożenie z warunkami

Witam

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 :wink: 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.

Hej,

 

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.

 

=JEŻELI(ORAZ(MIESIĄC(DZIŚ())<=3;(MIESIĄC(DZIŚ())+9)>=F4;(F4-(MIESIĄC(DZIŚ())+9))*$L$4>0);(F4-(MIESIĄC(DZIŚ())+9))*$L$4;JEŻELI(ORAZ(F4-MIESIĄC(DZIŚ())<0;(F4-((MIESIĄC(DZIŚ())-3)))*$L$4>0);(F4-(MIESIĄC(DZIŚ())-3))*$L$4;0))

 

Dawno nie pracowałem w LibreOffice’ie, więc możliwe, że formułę ORAZ trzeba zmienić na I.

 

Pozdrawiam,

Dimatheus

Dzięki za odpowiedź. Tak jak pisałeś ta formułka również nie działa.

Załączam plik dla lepszego zobrazowania o co chodzi

http://przeklej.org/file/MEexGn/mnozenie.z.warunkiem.ods

Hej,

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.

Pozdrawiam,

Dimatheus

Jasne. To prosty przykład. Jestem pełen zdziwienia że się nie otwiera prawidłowo.

http://przeklej.org/file/l1uHTt/mnozenie.z.warunkiem.xls

Hej,

Dzięki za pliczek. Przejrzałem, co tam się liczy i ja widziałbym to tak.

=JEŻELI(DZIŚ()>=DATA(2015;4;1);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;0)

Jak to mniej więcej działa?

  • 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.

 

Pozdrawiam,

Dimatheus

Piękne dzięki. Uprościłeś to i działa jak powinno :slight_smile: