Strona 1 z 1
Błąd #ARG! przy funkcji JEŻELI
: wt lip 12, 2022 11:38 pm
autor: llukaszku
Cześć, mam do zrobienia operację liczącą warunki i wszystko było dobrze do momentu gdy liczby były całkowite, problem powstał gdy powstała liczba niecałkowita.
Kod: Zaznacz cały
=JEŻELI(E3="Auto";(J3/1,23*AD3+AF3)*$AE$1;JEŻELI(AE3>=0;(J3/1,23*AD3+AF3+5*AE3)*$AE$1;" "))
odwołanie do pola ED3
gdy funkcja LEWY zwracała liczbę całkowitą (np. 1) funkcja JEŻELI zwracała prawidłową wartość, natomiast gdy funkcja LEWY zwraca liczbę niecałkowitą (np. 0,75) to funkcja JEŻELI zwraca błąd #ARG!
Jak to poprawić żeby funkcja JEŻELI w tym przypadku zwracała prawidłowy wynik?
Pozdrawiam
Re: Błąd #ARG! przy funkcji JEŻELI
: śr lip 13, 2022 9:23 am
autor: Jan_J
Testowanie zawiłych formuł w całości bywa równie zawiłe.
Sprawdź w osobnych komórkach, co dają formuły
Kod: Zaznacz cały
=E3="Auto"
=(J3/1,23*AD3+AF3)*$AE$1;
=JEŻELI(AE3>=0; (J3/1,23*AD3+AF3+5*AE3)*$AE$1; " ")
Jeśli to cię nie naprowadzi, zrób podobnie z wewnętrznym rozgałęzieniem
Re: Błąd #ARG! przy funkcji JEŻELI
: śr lip 13, 2022 9:46 am
autor: Jermor
Kolega Jan_J podpowiedział jak sprawdzić częściowe działania.
Ja chciałbym zwrócić ci uwagę na to, że funkcja LEWY() nie zwraca żadnej liczy całkowitej, lecz tekst złożony z tylu pierwszych znaków ile podano w drugim parametrze tej funkcji.
W twojej formule nie widzę, gdzie zawartość pola ED3 jest podstawiana, więc nie ma ono wpływu na twoją formułę JEŻELI().
Błąd #ARG! oznacza błędną wartość argumentu użytego w funkcji. Domyślając się powodu, zakładam, że w komórce R3 znajduje się liczba dziesiętna zapisana ze znakiem kropki, a nie przecinka. Funkcja LEWY() zwraca ciąg tekstowy zawierający kropkę i wyrażenie to nie może zostać przekształcone na wartość arytmetyczną, gdyż aby tak się stało znakiem dziesiętnym powinien być przecinek.
Jeśli dobrze trafiłem z diagnozą to zamiast twojej formuły LEWY() napisz taką:
W podpisie swego postu umieściłeś "OpenOffice 3.1". Ta wersja programu już od dawna jest przestarzała. Taki wpis tak naprawdę nic nie mówi o użytej aplikacji. Obecnie w użyciu są dwie: Apache OpenOffice w wersji 4.1.12 oraz LibreOffice w wersji 7.2.7 (stabilna) lub 7.3.4 (świeża).
W Libre office napisanie twojej formuły JEŻELI() jest znacznie prostsze, gdyż w tej wersji dostępna jest nowa funkcja WARUNKI(), która zastosowana do twojego obliczenia mogłaby wyglądać tak:
Kod: Zaznacz cały
=WARUNKI(E3="Auto";(J3/1,23*AD3+AF3)*$AE$1;AE3>=0;(J3/1,23*AD3+AF3+5*AE3)*$AE$1;1;" ")
Opis ciekawych funkcji obliczeniowych m.in. znajdziesz tutaj:
https://yestok.pl/lbo/y63.php
Re: Błąd #ARG! przy funkcji JEŻELI
: śr lip 13, 2022 11:55 am
autor: Rafkus
Wynikiem funkcji LEWY jest tekst i OpenOffice nie dokonuje automatycznej konwersji tekstu na liczbę przecinkową (LibeOffice to potrafi).
W OO musiałbyś jeszcze zastosować funkcje WARTOŚĆ:
Ponadto, czemu do liczby stosujesz funkcję tekstową? Zamiast niej możesz użyć funkcji zaokrąglającej do określonego miejsca po przecinku:
Re: Błąd #ARG! przy funkcji JEŻELI
: śr lip 13, 2022 12:07 pm
autor: Jan_J
Mały test na LO 7.2.7.2 rpm 64-bit
A1: 123,45 → (liczba)
B1: =lewy(a1; 6) → 123,45 (jako tekst)
C1: =a1=b1 → FAŁSZ (wskutek niezgodności typów)
Nie dostałem błędu #ARG!, ale być może Apache OO w tej sytuacji taki błąd generuje.
Jeśli zaś w A1 wpisać jakikolwiek TEKST o długości co najwyżej 6 znaków, zgodnie z oczekiwaniem wynikiem jest PRAWDA.
Poleganie na zgodności/niezgodności typów w arkuszach kalkulacyjnych jest uciążliwe.
Specyfikacja zachowań nie jest pełna (albo jest dostępna tylko w wysoko specjalistycznej dokumentacji) i różni się między systemami, a czasem nawet między wersjami.
Re: Błąd #ARG! przy funkcji JEŻELI
: śr lip 13, 2022 12:49 pm
autor: Jermor
Sprawdziłem w Apache OpenOffice. Tekst przedstawiający liczbę całkowitą może zostać użyty do działań arytmetycznych np. =2*"3".
Tekst zawierający liczbę dziesiętną (=2*"3,2") generuje błąd #ARG!.
W LibreOffice oba przykłady wykonają się obliczając wynik.
Re: Błąd #ARG! przy funkcji JEŻELI
: śr lip 13, 2022 1:37 pm
autor: llukaszku
Jermor pisze: ↑śr lip 13, 2022 9:46 am
Kolega Jan_J podpowiedział jak sprawdzić częściowe działania.
Ja chciałbym zwrócić ci uwagę na to, że funkcja LEWY() nie zwraca żadnej liczy całkowitej, lecz tekst złożony z tylu pierwszych znaków ile podano w drugim parametrze tej funkcji.
- tak to prawda, wiem o tym.
Jermor pisze: ↑śr lip 13, 2022 9:46 am
W twojej formule nie widzę, gdzie zawartość pola ED3 jest podstawiana, więc nie ma ono wpływu na twoją formułę JEŻELI().
Błąd #ARG! oznacza błędną wartość argumentu użytego w funkcji. Domyślając się powodu, zakładam, że w komórce R3 znajduje się liczba dziesiętna zapisana ze znakiem kropki, a nie przecinka. Funkcja LEWY() zwraca ciąg tekstowy zawierający kropkę i wyrażenie to nie może zostać przekształcone na wartość arytmetyczną, gdyż aby tak się stało znakiem dziesiętnym powinien być przecinek.
Jeśli dobrze trafiłem z diagnozą to zamiast twojej formuły LEWY() napisz taką:
- liczba dziesiętna jest ze znakiem przecinka i niestety wyrzuca błąd ARG. Tak na marginesie te same formuły w excelu działają bez problemu.
Re: Błąd #ARG! przy funkcji JEŻELI
: śr lip 13, 2022 1:47 pm
autor: llukaszku
Rafkus pisze: ↑śr lip 13, 2022 11:55 am
Wynikiem funkcji LEWY jest tekst i OpenOffice nie dokonuje automatycznej konwersji tekstu na liczbę przecinkową (LibeOffice to potrafi).
W OO musiałbyś jeszcze zastosować funkcje WARTOŚĆ:
- to jest rozwiązaniem problemu
bardzo dziękuję za pomoc