Strona 1 z 1

Nie diałająca funkcja...

: sob lut 04, 2017 2:05 pm
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

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

: sob lut 04, 2017 9:34 pm
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)).

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

: wt lut 07, 2017 10:12 am
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