Formula jeżeli(szukaj.tekst... zwraca #arg! OpenOffice

Użytkowanie arkusza kalkulacyjnego
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Formula jeżeli(szukaj.tekst... zwraca #arg! OpenOffice

Post autor: Dawidek990 »

Witam, potrzebuje zeby formula wyszukala w komorce b35 np jabłko, "jesli tak" pokaze "3101" "jesli nie" to szuka "gruszka" i gdy znajdzie pokaze 3102, a jak nie to "brak"
=JEŻELI(SZUKAJ.TEKST("jabłko"; B35);"3101";JEŻELI(SZUKAJ.TEKST("gruszka"; B35);"3102";"brak")))
niestety zamiast "3102" albo "brak" pokazuje sie arg!.

Co tu jest zle?
Jak napisac taka formule?

Prosze o pomoc.
OpenOffice 4.1.6 Windows 10
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Formula jeżeli(szukaj.tekst... zwraca #arg! OpenOffice

Post autor: Jermor »

Dzieje się tak dlatego, że formuła SZUKAJ.TEKST() zwraca wartość błędu "#ARG!" gdy tekstu nie znajdzie.
Czyli jeżeli jest wpisane "jabłko" pierwsze JEŻELI() wstawia "3101", gdy wpisana jest "gruszka" to pierwsze JEŻELI()zwraca "#ARG!". Każda formuła, której element jest błędem automatycznie zwraca błąd. Aby to zadziałało formuła powinna wyglądać tak:

Kod: Zaznacz cały

=JEŻELI(CZY.BŁĄD(SZUKAJ.TEKST("jabłko";B35));JEŻELI(CZY.BŁĄD(SZUKAJ.TEKST("gruszka";B35));"brak";"3102");"3101")
Przy okazji tej formuły znowu kłania się LIbreOffice, który w zasobach funkcji ma JEŻELI.BŁĄD() co znacznie uprościłoby formułę.

Kilka lat temu z powodu twoich pytań napisałem funkcję użytkownika GDZIEJEST() opisaną tu: viewtopic.php?t=5167
Podaje ona pozycję poszukiwanego ciągu w innym ciągu i zwraca 0, gdy poszukiwany ciąg nie występuje. Wykorzystując tę funkcję i funkcję WYBIERZ() możesz wykorzystać taką formułę:

Kod: Zaznacz cały

=WYBIERZ((GDZIEJEST("jabłko";B35)<>0)+2*(GDZIEJEST("gruszka";B35)<>0)+1;"brak";"3101";"3102")
Ten fragment formuły (GDZIEJEST("jabłko";B35)<>0)+2*(GDZIEJEST("gruszka";B35)<>0)+1 wylicza indeks dla funkcji WYBIERZ().
Ponieważ nie wiem, czy słowa "jabłko" i "gruszka" są jedynymi słowami w komórce B35, czy też mogą występować w treści komórki np. "duże jabłko", to indeks wyznaczany jest w ten sposób. Gdyby komórka zawierała wyłącznie pojedyncze wyrazy, to wyznaczanie indeksu może być prostsze, gdyż wtedy dla znalezionego słowa zwracana jest wartość 1. Zasada jest taka sama. Jeśli w komórce nie występuje słowo "jabłko" lub "gruszka" obie funkcje zwracają 0, do którego jest dodawana stała o wartości 1, gdyż indeks dla funkcji WYSZUKAJ() musi zaczynać się od 1, gdy znajdzie "jabłko" wynikiem będzie jakaś liczba, zatem wyrażenie logiczne będzie prawdziwe, dając wartość 1 a po dodaniu stałej przyjmie wartość 2 (druga część tego wyrażenia zwróci 0, bo już wystąpiło "jabłko"). W przypadku "gruszki" wynik PRAWDA jest mnożony przez 2 a po dodaniu stałej otrzymuje wartość 3. ,Trzy ostatnie argumenty funkcji WYBIERZ(), to odpowiedź na wyliczony indeks tej funkcji.
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
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Formula jeżeli(szukaj.tekst... zwraca #arg! OpenOffice

Post autor: Jermor »

Nie napisałeś tego wprost. Jeśli jednak jest tak jak myślę i komórka (komórki) B35 i następne zawierają pojedyncze słowa, to możesz napisać taką formułę:

Kod: Zaznacz cały

=JEŻELI(B35="jabłko";"3101";"")&JEŻELI(B35="gruszka";"3102";"")&(JEŻELI(BIEŻĄCY()="";"brak";""))
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.
ODPOWIEDZ