Nie diałająca funkcja...

Użytkowanie arkusza kalkulacyjnego
AllRounder
Posty: 1
Rejestracja: sob lut 04, 2017 1:55 pm

Nie diałająca funkcja...

Post autor: AllRounder »

Witam wszystkich,
proszę o pomoc.

Mam w komórce funkcję: =JEŻELI('Formularz Bazowy'.E25="NIE";(JEŻELI('Formularz Bazowy'.Q25="PA 39";'Formularz Bazowy'.N25/39+1,5;"")&JEŻELI('Formularz Bazowy'.Q25="PA 43";'Formularz Bazowy'.N25/43+1;"")&JEŻELI('Formularz Bazowy'.Q25="M 328-N";'Formularz Bazowy'.N25/37+1,5;"")&JEŻELI('Formularz Bazowy'.Q25="MY 442";'Formularz Bazowy'.N25/42+1;""));"")

Działa bez zarzutu i zwraca mi p[oprawny wynik z kilkoma / kilkunastoma miejscami po przecinku. Jednak kiedy dodaję funkcję zaokrąglania:
=ZAOKR.DO.CAŁK(JEŻELI('Formularz Bazowy'.E25="NIE";(JEŻELI('Formularz Bazowy'.Q25="PA 39";'Formularz Bazowy'.N25/39+1,5;"")&JEŻELI('Formularz Bazowy'.Q25="PA 43";'Formularz Bazowy'.N25/43+1;"")&JEŻELI('Formularz Bazowy'.Q25="M 328-N";'Formularz Bazowy'.N25/37+1,5;"")&JEŻELI('Formularz Bazowy'.Q25="MY 442";'Formularz Bazowy'.N25/42+1;""));""))

zwraca mi informację o błędzie: #ARG!

Czy robię coś źle? Nie ogarniam... :knock:

Pozdrawiam, AllRounder
Apache Open Office 4.1.2 na Windows 10 Home
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Nie diałająca funkcja...

Post autor: Jan_J »

Mówiąc inaczej,

jeżeli masz formułę o ustalonej treści, dajmy na to =FORMUŁA, to generuje Ci wynik, który wygląda jak liczba, i o którym myślisz jak o liczbie.

Jeśli zaś obudujesz ją funkcją zaokrąglającą do postaci =zaokr.do.całk(FORMUŁA), to daje Ci błąd #ARG zamiast zaokrąglonego wyniku.

Powód może być jeden: wynik pierwotnej formuły nie jest liczbą, tylko tekstem.
Co jest mało dziwne, jeśli wziąć pod uwagę, że FORMUŁA jest zbudowana z części połączonych operatorem &, który służy do sklejania tekstów.

Najlepiej byłoby ulepszyć formułę wyjściową, ale Q&D poprawa też jest prosta:
=zaokr.do.całk(wartość(FORMUŁA)).
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
esima
Posty: 11
Rejestracja: wt lut 07, 2017 10:02 am

Re: Nie diałająca funkcja...

Post autor: esima »

Witam!

Trochę dziwnie zbudowana jest tutaj funkcja JEŻELI. Z tego co widzę, to kolega zajmuje się roletami :). 'Formularz Bazowy'.Q25 może więc przyjąć tylko jedną z wartości (np. PA39, PA43). Więc konstrukcja JEŻELI(;;)&JEŻELI(;;) chyba nie jest do końca dobra. Czy nie powinno być JEŻELI(;;JEŻELI(;;JEŻELI()))?

Ja rozbiłbym jeszcze inaczej. W związku z tym, że może za chwilę będziecie chcieli wprowadzić kolejne pancerze (PA40, PCV37, PA52...) to wprowadziłbym pomocniczą tabelkę. W pierwszej kolumnie wpisujemy: PA39, PA43, M 328-N itd, w drugiej kolumnie odpowiednie wartości: 39, 43, 37 idt. Dodatkowo pierwszą kolumnę można wykorzystać do "Poprawności danych" dla komórki Formularz Bazowy'.Q25. Zmiana parametrów lub nazw pancerzy wymusi edycję tabeli, a nie formuł.

Pozdrawiam
Jakub
LibreOffice 5.3 na Windows 10 i macos
ODPOWIEDZ