Problem z dopasowaniem funcji

Użytkowanie arkusza kalkulacyjnego
Tomkoo
Posty: 2
Rejestracja: czw sie 02, 2018 2:54 pm

Problem z dopasowaniem funcji

Post autor: Tomkoo »

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
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Problem z dopasowaniem funcji

Post autor: Jan_J »

Tomkoo pisze:[...]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

jeżeli(warunek; wartość_na_tak; 0)
a pominięcie drugiego i trzeciego jest równoważne z

Kod: Zaznacz cały

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

jeżeli(warunek)
można zredukować bez utraty znaczenia do

Kod: Zaznacz cały

warunek
Funkcja alternatywy logicznej (LUB) spełnia to założenie, wobec tego zamiast formuły

Kod: Zaznacz cały

=JEŻELI(LUB(A1=B1;A1=B2;...;A1=B10)))
prościej będzie napisać

Kod: Zaznacz cały

=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

=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

=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 (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Tomkoo
Posty: 2
Rejestracja: czw sie 02, 2018 2:54 pm

Re: Problem z dopasowaniem funcji

Post autor: Tomkoo »

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

{=LUB(A1=(B1:B10))}
Ta funkcja tak nie działa, prawda?

Kod: Zaznacz cały

{=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

{=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

2	1	Nie 
	2	Tak
	3	Nie 
Open office 4.1.4, Windows 10
Awatar użytkownika
Jermor
Posty: 2239
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Problem z dopasowaniem funcji

Post autor: Jermor »

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

=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.15, LO 7.5.9 (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