Błąd #ARG! przy funkcji JEŻELI

Użytkowanie arkusza kalkulacyjnego
llukaszku
Posty: 3
Rejestracja: wt lip 12, 2022 11:30 pm

Błąd #ARG! przy funkcji JEŻELI

Post 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

Kod: Zaznacz cały

=LEWY(R3;4)
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
OpenOffice 3.1 na Windows
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Błąd #ARG! przy funkcji JEŻELI

Post 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

Kod: Zaznacz cały

=AE3>=0
=J3/1,23*AD3+AF3+5*AE3)*$AE$1
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Jermor
Posty: 2351
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Błąd #ARG! przy funkcji JEŻELI

Post 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ą:

Kod: Zaznacz cały

=PODSTAW(LEWY(R3;4);".";",")
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
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Błąd #ARG! przy funkcji JEŻELI

Post 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ŚĆ:

Kod: Zaznacz cały

=WARTOŚĆ(LEWY(R3;4))
Ponadto, czemu do liczby stosujesz funkcję tekstową? Zamiast niej możesz użyć funkcji zaokrąglającej do określonego miejsca po przecinku:

Kod: Zaznacz cały

=ZAOKR(R3; 3)
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Błąd #ARG! przy funkcji JEŻELI

Post 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.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Jermor
Posty: 2351
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Błąd #ARG! przy funkcji JEŻELI

Post 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.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
llukaszku
Posty: 3
Rejestracja: wt lip 12, 2022 11:30 pm

Re: Błąd #ARG! przy funkcji JEŻELI

Post 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ą:

Kod: Zaznacz cały

=PODSTAW(LEWY(R3;4);".";",")
- 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.
OpenOffice 3.1 na Windows
llukaszku
Posty: 3
Rejestracja: wt lip 12, 2022 11:30 pm

Re: Błąd #ARG! przy funkcji JEŻELI

Post 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ŚĆ:

Kod: Zaznacz cały

=WARTOŚĆ(LEWY(R3;4))

Kod: Zaznacz cały

=WARTOŚĆ(LEWY(R3;4))
- to jest rozwiązaniem problemu :-) bardzo dziękuję za pomoc
OpenOffice 3.1 na Windows
ODPOWIEDZ