Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Użytkowanie arkusza kalkulacyjnego
KoalaG
Posty: 30
Rejestracja: ndz sty 28, 2018 10:42 am

Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Post autor: KoalaG »

Witam.

Mam mały problem funkcja jeżeli bierze pod uwagę tylko wartości z wyrażenia logicznego czyli mamy tylko w wyniku prawda i fałsz.
A ja potrzebuję mieć możliwość wyboru jeśli

A=0 B=0 to
A=0 B=1 to
A=1 B=0 to
A=1 B=1 to
OpenOffice 4.1.13 na Windows 7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Post autor: Jan_J »

Toż są spójniki logiczne

AND(p;q) czyli I(p;q) a może ORAZ(p;q), nie pamiętam;
OR(p;q) czyli LUB(p;q),
NOT(p) czyli NIE(p)
które można zagnieżdżać w warunkach, np. =IF(AND(p;q); "oba są tak"; "któryś jest nie")
albo posługiwać się analogią TRUE ~ 1 (ostrożnie przy LUB, bo 1+1 jest 2), FALSE ~ 0
=IF((p=1)*(q=1); "oba są tak"; "któryś jest nie)"
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
KoalaG
Posty: 30
Rejestracja: ndz sty 28, 2018 10:42 am

Re: Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Post autor: KoalaG »

Nie chodzi mi o nazewnictwo operatorów logicznych
Chodzi mi o coś w stylu funkcji switch ... case z programowania


{
case (A=0 i B=0):
Wyświetl w komórce ""
break;

case (A=0 i B=1 ):
Wyświetl komunikat " Nie podałeś wartości w poprzednim wierszu"
break;

//...
case (A=1 i B=0) :
Nie wyświetlaj żadnej wartości
break;

default (A=1 i B=1):
Wyświetl numer porządkowy A1+1
break;
}

Jeszcze jedno
Czy w komórce np B5 mogę umieścić funkcje która nada wartość komórce C5?
OpenOffice 4.1.13 na Windows 7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Post autor: Jan_J »

To było C. W Pythonie nie ma switch; jest

Kod: Zaznacz cały

if blablabla:
    miau
elif kukukuku:
    hau
else:
    kukuryku
co z jednej strony działa jak switch wielopozycyjny, z drugiej może być rozumiane -- a przynajmniej emulowane -- jako sekwencja zagnieżdżonych warunków.

=jeżeli(blabla; miau; jeżeli(kukukuku; hau; kukuryku))

To tylko jedna z możliwości. Do pewnego stopnia da się taki złożony układ rozbić na zespół komórek. Ale to nie będzie całkiem równoważne w pełnej ogólności -- choć w poszczególnych przypadkach może być.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
KoalaG
Posty: 30
Rejestracja: ndz sty 28, 2018 10:42 am

Re: Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Post autor: KoalaG »

Więc składnia wygląda tak
JEŻELI (jakieś wyrażenie jest prawdziwe, to wykonaj określone działanie, a w przeciwnym razie wykonaj inne działanie)
JEŻELI (Warunek, Jeśli prawda to, Jeśli fałsz to)

A=0 B=0 to
A=0 B=1 to
A=1 B=0 to
A=1 B=1 to

JEŻELI (A, Jeśli prawda to, Jeśli fałsz to)

JEŻELI (A, JEŻELI (B, Jeśli prawda to, Jeśli fałsz to), JEŻELI (B, Wyświetl komunikat " Nie podałeś wartości w poprzednim wierszu", Wyświetl w komórce ""))
JEŻELI (A, JEŻELI (B, Wyświetl numer porządkowy A1+1, Nie wyświetlaj żadnej wartości), JEŻELI (B, Wyświetl komunikat " Nie podałeś wartości w poprzednim wierszu", Wyświetl w komórce ""))

Lekka masakra w czytelności.

A jak wyświetlić komunikat? Potrzebuję podać informację o nie uzupełnieniu komórki wyżej.
OpenOffice 4.1.13 na Windows 7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Post autor: Jan_J »

Bo arkusze formuł nie zostały pomyślane jako wygodne środowiska programowania interfejsu.
Raczej jako proste środowiska do tworzenia automatycznie przeliczających się prostych dokumentów.

Jest też możliwość ponumerowania komunikatów, zapisania ich gdzieś na boku i wyłuskania za pomocą funkcji INDEKS. Trzeba by wtedy mieć wyrażenie przeliczające układ warunków na liczbę.

Na przykład

A1:A4
OK
Nie podano nazwiska
Nie podano adresu e-mail
Wypełnij oba pola

B1: nazwisko do wpisania
B2: email do wpisania
B3: =INDEKS(A1:A4, (B1="") + 2*(B2="") + 1)

Magiczna formuła (B1="") + 2*(B2="") + 1 odzworowuje wszystkie możliwe układy 2 wartości logicznych (0,0), (1,0), (0,1), (1,1) na liczby całkowite 1, 2, 3, 4, będące numerami porządkowymi komunikatów umieszczonych w kolumnie A.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Jermor
Posty: 2255
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Post autor: Jermor »

Wykorzystując magiczną formułę @Jan_J można użyć funkcji WYBIERZ
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.
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zawansowana funkcja Jeżeli. Funkcja wyboru kilku wyników

Post autor: Jan_J »

Jermor pisze:Wykorzystując magiczną formułę @Jan_J można użyć funkcji WYBIERZ
Ba!

Choose, Wybierz
Nie zabija piękna magicznych formuł obliczających indeksy w tablicach na podstawie ich rozwinięć dwójkowych otrzymanych z ciągu warunków.
Podobna, ale nawet lepsza od indeks, bo ewaluuje tylko argument wskazany przez selektor. Podczas gdy indeks pracuje na ciągu przygotowanych uprzednio wartości.
Jednocześnie trochę gorsza przez excelowate ograniczenie liczby argumentów do 30.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ