Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 7. 7. 2022 11:44:38

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Skládání logických funkcí u filtru

Dobrý den všem. Mám problém se správným poskládáním podmínek fitru. Možná to ani nejde, ale pokusím se nastínit problém a předem děkuji za případné nasměrování.


Potřeboval bych vyfiltrovat tabulku podle tří kritérií resp. podle tří sloupců. První sloupec je ID a musí platit pro všechny řádky. Druhý sloupce je Výdaj1 a třetí sloupec Výdaj2. Potřebuji nastavit filtr tak aby se zobrazily všechny řádky kde je nenulová alespoň jedna z hodnot Výdaj1 nebo Výdaj2


Tedy ID=číslo AND (Výdaj1 <> 0 OR Výdaj2 <> 0). Právě nevím jak nastavit tu závorku, tedy vkastně pořadí vyhodnocení. Samozřejmě to lze snadno vyřešit pomocným sloupcem Výdaj3 = (Výdaj1 + Výdaj2) <> 0, ale rád bych se tomu vyhnul, pokud to jen trochu půjde. Zkusil jsem různé pořadí, ale nedaří se.


Jo a jde o filtr kontingenční tabulky, filtruji pomocí makra, ale to asi na logice věci nic nemění.


EDIT: Ještě doplňuji, má to fungovat tak že pokud výdaj1+výdaj2 = 0 tak se řádek nezobrazí.

Editoval ludviktrnka (7. 7. 2022 11:47:23)


LibreOffice 5.4.

Offline

#2 7. 7. 2022 13:46:47

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Skládání logických funkcí u filtru

Možná jsem to nepochopil správně. Také nevím, zda je příklad uvedený v syntaxi vzorce KT, nebo makra. ale jde o to skrýt řádky, které mají buď Výdaj1 <> 0, nebo Výdaj2 <> 0, nebo Výdaj1 = Výdaj2. Jinak řečeno tam kde je cena jednoznačně stejná se sktyjí, a tam kde došlo ke změně se nechají zobrazené. Podle  mého je všude OR. Vzorcem by to vypadalo takto :
OR(Výdaj1<>0; Výdaj2<>0; Výdaj1<>Výdaj2) = 1, pokud by se tam mohla vyskytnout mínusová položka, nebo pozitivně :
OR(Výdaj1=0; Výdaj2=0; Výdaj1=Výdaj2) = 1.


Vypadá to jako hledání položek se změnou ceny. Řazení a skrývání jsou dvě rozdílné věci, takže stačí seřadit soubor se skrytými řádky, nebo nejprve seřadit a následně skrýt.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 8. 7. 2022 16:56:03

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: Skládání logických funkcí u filtru

To neutr: bohužel jsem to asi vysvětlil špatně. Jde o filtr v kontingenční tabulce, tedy nikoli vzorce a ani nechci pokud možno zasahovat do mateční databáze. Jednotlivá kritéria filtru v KT se skládají pomocí logického AND nebo OR. Já potřebuji aby výsledkem byly všechny řádky které splňují:


výdaj1 <> 0 NEBO výdaj2 <> 0 (musí platit alespoň jedna z podmínek)


a současně ID = zadané číslo (musí platit vždy)


Tedy mám tři kritéria z nichž dvě jsou spojeny logickým OR a výsledek je se třetím kritériem spojen logickým AND.


Pokud dám všude OR tak budou výsledekm i řádky kde ID = číslo, ale výdaj1 = 0 a také výdaj2 = 0 a také všechny řádky kde výdaj1 nebo výdaj2 jsou nenulové ale ID <> zadané číslo. To je nežádoucí výsledek.


Zadání
ID / výdaj1 / výdaj2
2 / 0 / 0
3 / 1 / 0
2 / 0 / 1
2 / 1 / 1
3 / 1 / 1
2 / 1 / 0


zadám ID = 2 a výsledek musí být (bez požadavku na pořadí):
ID / výdaj1 / výdaj2
2 / 0 / 1
2 / 1 / 1
2 / 1 / 0


Já si v podstatě myslím, že to nejde, spíš se ptám jestli na to není nějaký fígl, který neznám.

Editoval ludviktrnka (8. 7. 2022 17:18:12)


LibreOffice 5.4.

Offline

#4 8. 7. 2022 17:40:18

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: Skládání logických funkcí u filtru

... tak si to zkouším ručně. Jde to tak, že do filtru zadám výdaj1 <> 0 NEBO výdaj2 <> 0 a ručně pak "vyfitruji" ID pomocí šipečky v hlavičce kontingenční tabulky. Funguje to, ale myslím že makrem toto asi nepůjde ...

Editoval ludviktrnka (8. 7. 2022 18:04:35)


LibreOffice 5.4.

Offline

#5 9. 7. 2022 22:55:58

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: Skládání logických funkcí u filtru

Moc to nechápu, tak jen k logice.

ludviktrnka napsal(a)

Tedy ID=číslo AND (Výdaj1 <> 0 OR Výdaj2 <> 0). Právě nevím jak nastavit tu závorku, tedy vkastně pořadí vyhodnocení. Samozřejmě to lze snadno vyřešit pomocným sloupcem Výdaj3 = (Výdaj1 + Výdaj2) <> 0, ale rád bych se tomu vyhnul, pokud to jen trochu půjde. Zkusil jsem různé pořadí, ale nedaří se.

Pokud mi nevychází priorita operací, tak doplním závorky:
(ID=číslo) AND ( ( Výdaj1 <> 0 ) OR ( Výdaj2 <> 0 ) )

ludviktrnka napsal(a)

EDIT: Ještě doplňuji, má to fungovat tak že pokud výdaj1+výdaj2 = 0 tak se řádek nezobrazí.

Tohle funguje jen, když mají oba výdaje stejné znaménko, Tedy pokud to má být ekvivalent logické alternativy. Jinak se mohou potkat výdaje s opačným znaménkem...

Editoval lp. (9. 7. 2022 22:56:25)

Offline

#6 10. 7. 2022 11:19:02

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: Skládání logických funkcí u filtru

problém je že zadání filtru v KT žádné závorky nemá. To je smysl dotazu. Jak nastavit pořadí priorit (jakoby modelovat závorku), když mohu jen řadit za sebe kritéria a vždy následující je spojeno s předchozím pomocí logické funkce (AND, OR).


Výdaj1 i výdaj2 jsou vždy buď rovné nula nebo kladné, tzn. Výdaj1+výdaj2=0 nastane pouze tehdy pokud jsou obě hodnoty nulové. S tím problém není. Problém je, že pro tuhle operaci musím zřejmě zřídit pomocný sloupec, čemuž jsem se chtěl vyhnout.

Editoval ludviktrnka (10. 7. 2022 11:19:47)


LibreOffice 5.4.

Offline

#7 11. 7. 2022 00:09:38

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: Skládání logických funkcí u filtru

Tip jen z hlavy, tohle jsem zatím nezkoušel.

výdaj1 <> 0 NEBO výdaj2 <> 0 AND ID = zadané číslo

nebo "roznásobení":

výdaj1 <> 0 AND ID = zadané číslo NEBO výdaj2 <> 0 AND ID = zadané číslo

Editoval lp. (11. 7. 2022 00:10:04)

Offline

#8 11. 7. 2022 07:44:44

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 697

Re: Skládání logických funkcí u filtru

lp. napsal(a)

Tip jen z hlavy, tohle jsem zatím nezkoušel.

výdaj1 <> 0 NEBO výdaj2 <> 0 AND ID = zadané číslo


Tohle  nefunguje, to už jsem zkoušel. Neddokážu přesně říct systém vyhodnocení, každopádně výsledky jsou nekorektní.


lp. napsal(a)

nebo "roznásobení":

výdaj1 <> 0 AND ID = zadané číslo NEBO výdaj2 <> 0 AND ID = zadané číslo


Tohle vypadá dobře. Ale po vyzkoušení to nefunguje. Vypadá to ještě na jedno omezení fitru KT a sice max tři ktritéria, takže i kdyby toto řešení bylo logický správné, tak KT jej nedokáže aplikovat.


Téma uzavírám, děkuji LP a Neutr.


LibreOffice 5.4.

Offline

#9 11. 7. 2022 17:44:55

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: Skládání logických funkcí u filtru

Tak jsem se na to podíval...

ID lze filtrovat ve filtru pole, výdaje s podmínku NEBO ve filtru dat.
Dohromady to dá potřebnou podmínku AND.

Offline

Zápatí