Strona 1 z 1

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

: pn lut 27, 2023 3:05 pm
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.

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

: pn lut 27, 2023 6:07 pm
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.

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

: pn lut 27, 2023 6:28 pm
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";""))