Problem z dopasowaniem funcji

Użytkowanie arkusza kalkulacyjnego

Problem z dopasowaniem funcji

Postprzez Tomkoo » Cz sie 02, 2018 3:13 pm

Dzień dobry,
Do tej pory radziłem sobie na podstawie czytania forum i poradników, ale tym razem nie wiem nawet od której strony się do tego zadania zabrać. Próbuję stworzyć formułę która będzie się opierała na sporej ilości danych i nie wiem jak to zwinąć do prostszej wersji. Mianowicie funkcja =JEŻELI(LUB(A1=B1;A1=B2;...;A1=B10))) działa, ale jest strasznie nieporęczna, a =JEŻELI(LUB(A1=(B1:B10))) całkowicie nie działa. Ma ktoś pomysł co z tym zrobić?
Open office 4.1.4, Windows 10
Tomkoo
 
Posty: 2
Dołączył(a): Cz sie 02, 2018 2:54 pm

Re: Problem z dopasowaniem funcji

Postprzez Jan_J » Pt sie 03, 2018 11:54 am

Tomkoo napisał(a):[...]funkcja =JEŻELI(LUB(A1=B1;A1=B2;...;A1=B10))) działa, ale jest strasznie nieporęczna

Jeżeli jest funkcją z 3 argumentami: jeżeli(warunek; wartość_na_tak; wartość_na_nie), z których tylko pierwszy jest obowiązkowy. Pominięcie trzeciego argumentu jest równoważne z
Kod: Zaznacz cały   Rozszerz widokZwiń widok
jeżeli(warunek; wartość_na_tak; 0)
a pominięcie drugiego i trzeciego jest równoważne z
Kod: Zaznacz cały   Rozszerz widokZwiń widok
jeżeli(warunek; 1; 0)
wskutek czego, o ile tylko testowany warunek przyjmuje zawsze jedną z wartości PRAWDA, FAŁSZ albo 1, 0, to konstrukcję postaci
Kod: Zaznacz cały   Rozszerz widokZwiń widok
jeżeli(warunek)
można zredukować bez utraty znaczenia do
Kod: Zaznacz cały   Rozszerz widokZwiń widok
warunek


Funkcja alternatywy logicznej (LUB) spełnia to założenie, wobec tego zamiast formuły
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=JEŻELI(LUB(A1=B1;A1=B2;...;A1=B10)))
prościej będzie napisać
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=LUB(A1=B1;A1=B2;...;A1=B10))


, a =JEŻELI(LUB(A1=(B1:B10))) całkowicie nie działa. Ma ktoś pomysł co z tym zrobić?

Co z tym zrobić? to zależy od celu, jakie chcemy osiągnąć, a który nie został jawnie wyrażony...

Sądzę, że chodzi o odpowiedź na pytanie: czy w obszarze B1:B10 znajduje się choćby jedna komórka o wartości takiej jak A1?
Formuła
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=LUB(A1=(B1:B10))
to właśnie sprawdza. Tylko że używa ona tzw. składni wektorowej, a to znaczy, że musisz ją zatwierdzać przez <Ctrl+Shift+Enter>, i że nie da się jej powielać przez przeciąganie (choć da się przez kopiuj/wklej).

Inna, nie wektorowa możliwość, to pytanie postaci: czy w obszarze B1:B10 liczba komórek o wartości takiej, jak A1, jest dodatnia? czyli
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=LICZ.JEŻELI(B1:B10;A1)>0
choć tu trzeba uważać na przełączalne opcje dotyczące kryteriów wyszukiwania oraz użycie różnego rodzaju wyrażeń regularnych.

W obu przypadkach chodzi o problemy decyzyjne (TAK/NIE), których wynik jest sformułowany w zwartej postaci warunku. Wobec tego użycie funkcji warunkowej (JEŻELI) jest zbędne.
JJ
LO (5.4|6.0) ∙ AOO 4.1.5 ∙ Python (3.6|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3664
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Problem z dopasowaniem funcji

Postprzez Tomkoo » Pn sie 06, 2018 9:08 am

Dziekuję Ci Jan_J za odpowiedź. Nieco rozjaśniła mi temat, jednakże nadal nie rozwiązałem tego problemu.
Potrzebuję żeby formuła wykonała takie zadanie:
-Jeżeli komórka A1 jest taka sama jak obszar B1:B10 to wyświetl "Tak"
-Jeżeli komórka A1 jest taka sama jak obszar B11:B20 to wyświetl "Nie"
-Jeżeli komórka A1 jest taka sama jak obszar B21:B30 to wyświetl "Może"
Trochę sobie pokombinowałem (bez tworzenia całej formuły) i dzieje się tak:

Wyrzuca mi prawda i fałsz, czyli jest ok ale to nie to co potrzebuje
Kod: Zaznacz cały   Rozszerz widokZwiń widok
{=LUB(A1=(B1:B10))}

Ta funkcja tak nie działa, prawda?
Kod: Zaznacz cały   Rozszerz widokZwiń widok
{=LUB(A1=(B1:B10);"TAK";"NIE")}

Działa już mniej więcej tak jak powinno, ale kopiuje się od razu na 10 wierszy
Kod: Zaznacz cały   Rozszerz widokZwiń widok
{=JEŻELI(A1=(B1:B10);"TAK";"NIE")}

Daje to mniej więcej taki efekt, a potrzebuję, żeby działało tylko w komórce C1
Kod: Zaznacz cały   Rozszerz widokZwiń widok
2   1   Nie
   2   Tak
   3   Nie
Open office 4.1.4, Windows 10
Tomkoo
 
Posty: 2
Dołączył(a): Cz sie 02, 2018 2:54 pm

Re: Problem z dopasowaniem funcji

Postprzez Jermor » Śr sie 08, 2018 2:42 pm

Jeśli jest tak jak to napisałeś, że odpowiedź zależy od tego czy wartość znajduje się w komórkach od 1 do 10, od 11-do 20 lub od 21 do 30 to skorzystaj z kombinacji funkcji WYBIERZ, ZNAJDŹ.POZYCJĘ i LICZBA.CAŁK:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=WYBIERZ(LICZBA.CAŁK((PODAJ.POZYCJĘ(A1;B1:B30;0)-1)/10)+1;"Tak";"Nie";"Może")

Przy założeniu, że wartość w A1 zawsze znajduje się gdzieś w tablicy B1:B30 i wartości w tablicy nie powtarzają się. Gdyby jej nie było pojawi się #N/D.
AOO 4.1.5, LO 6.0.6 (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ą taki sam problem, będą wiedzieli, że jest rozwiązanie.
Jermor
 
Posty: 453
Dołączył(a): So paź 12, 2013 11:09 am


Powrót do Calc

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 1 gość