Widzę tu dużą ułomność twojego rozwiązania. Przyglądając się opisowi tego co piszesz, dochodzę do wniosku, że podana przez ciebie formuła
Kod: Zaznacz cały
=$H$3*$B$3*10/1,5+JEŻELI(C3=CZY.NIEPARZYSTE(C3);+2;+3)
jest wpisana do komórki C3. Już to samo jest błędem, ponieważ tego typu formuła generuje błąd 522, mówiący o tym, że w obliczeniach następuje odwołanie cykliczne. Formuła napisana w komórce odwołuje się do siebie samej.
Pytanie, skoro to jest błąd, to dlaczego nie ma o nim żadnej informacji?
Otóż dlatego, że czasami taki rodzaj obliczeń, szczególnie w dziedzinie inżynierskiej jest potrzebny. Nazywa się go obliczeniami iteracyjnymi. W opcjach programu Calc jest specjalny przełącznik informujący o tym, czy obliczenia iteracyjne są dozwolone. Jeśli są, błąd się nie wyświetla, a arkusz próbuje wykonać obliczenia. To ustawienie jest w "Narzędzia -> Opcje -> LibreOffice Calc -> Oblicz -> Odwołania iteracyjne".
Teraz sama część JEŻELI(C3=CZY.NIEPARZYSTE(C3);+2;+3), ona daje wyniki dotyczące takiego oto badania: czy wartość w C3 jest równa wynikowi funkcji CZY.NIEPARZYSTE(C3). Funkcja CZY.NIEPARZYSTE zwraca jedną z dwóch wartości 1, gdy liczba jest nieparzysta i 0 - gdy parzysta. Gdy C3 zawiera np. 7, to ta część formuły sprawdza czy 7 jest równe 1, bo CZY.NIEPARZYSTE(C3) da w wyniku 1. To oczywiście spowoduje, że ten fragment prawidłowo zadziała tylko gdy w C3 będzie 1 albo dowolna liczba parzysta. Formalnie to wyrażenie jest poprawne ale bezsensowne. Pierwszym argumentem funkcji JEŻELI może być przecież od razu funkcja CZY.NIEPARZYSTE, gdyż zwraca ona, sama z siebie, wartość PRAWDA albo FAŁSZ. Ale już w tym przykładzie coś się nie zgadza, bo wygląda na to, że gdy liczba jest nieparzysta ma zostać dodane 2 a gdy parzysta - 3 a dwa posty niżej napisałeś odwrotnie.
brex87 pisze:Jeśli wyjdzie parzysta to +2, jeśli nieparzysta to +3 ?
Jeżeli chcesz w swojej formule wykorzystać obliczony już w jej procesie wynik, powinieneś użyć funkcji BIEŻĄCY(), funkcja udostępnia wartość obliczoną w wyrażeniu do miejsca jej wystąpienia. Czyli twoja formuła powinna wyglądać mniej więcej tak:
Kod: Zaznacz cały
=$H$3*$B$3*10/1,5+CZY.NIEPARZYSTE(BIEŻĄCY())+2
Funkcje CZY.PARZYSTE() i CZY.NIEPARZYSTE() biorą pod uwagę tylko część całkowitą liczby.
W końcu, co oznacza
brex87 pisze:tymczasem po zaokrągleniu do pełnej liczby, czyli 20 i tak dodawane jest 3
W twojej formule nigdzie nie widać zaokrąglania do liczby całkowitej, więc skąd to pytanie? 19,8+3 to 22,8