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

#1 14. 8. 2017 22:34:42

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 145

array funkce - filtrování?

Ahojte,
pokouším se použít ARRAY "formu" (ctrl+shift+enter) funkcí k filtrování dat.

Vím že existují automatické filtry apod....no prostě řekněme, že by se mi hodilo toto řešení...ale nevím jak k němu dospět.

Myslím, že ukázka v souboru je všeříkající.
https://uloz.to/!DNJDn7xP5WrH/ukazka-ods

diky za nápady.

(soubor je vytvořen v LO 5.2.7.2)


OO 3.2.1  WIn 8 64bit  16GB RAM

Offline

#2 15. 8. 2017 06:06:11

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

Re: array funkce - filtrování?

dech napsal(a)

pokouším se použít ARRAY "formu" (ctrl+shift+enter) funkcí k filtrování dat.

Vím že existují automatické filtry apod....no prostě řekněme, že by se mi hodilo toto řešení...ale nevím jak k němu dospět.
(soubor je vytvořen v LO 5.2.7.2)

     Celkem chápu problém, ale nechápu zda chcete pomoci s filtrem, nebo s maticovým vzorcem. Takže nejsnadnější vytvoření filtrů je pomocí AUTOMATICKÉHO FILTRU. Vyberete celou tabulku a navolíte DATA > AUTOMATICKÝ FILTR (dostanete možnost zahrnout záhlaví. Pak už stačí postupně aktivovat jednotlivá filtrování ve sloupcích. Nejprve vyberete sloupec kde je výraz auto (zůstanou jen položky s autem - ostatní se skryjí). Následně navolíte sloupec s typem paliva (benzín) a zůstanou jen auta s pohonem na benzín. Podobné je to s ostatními filtry. Snad je vhodné doplnit, že toto je standardní práce v kontingenční tabulce. Máte například možnost vybrané výsledky vyexportovat do jiného umístění (listu a podobně).


     S maticovými vzorci je to maličko složitější. Už jste zřejmě zjistil, že maticové vzorce buď vytvoří sloupec kam vrátí výsledky z řádku, nebo výsledky sloučí do jednoho výsledku (součet, součin atd.) Pak tam tedy vznikají například ty nechtěné nuly. Vy ale požadujete víc. Měly by se soustředit (seřadit) požadované výsledky pod sebe.
     Takto soustředit výsledky umí jenom funkce RANK (jsou celkem 3 druhy). Lze ji zadávat také jako matici. S tím mohou být problémy (netestoval jsem to) ale funguje to perfektně pokud zadáte funkci na určitý úsek. Seřadí data podle potřeby. Takže například k Vašemu řešení přidejte ještě sloupec s funcí RANK a bude to zřejmě ono.
     Snadnější je snad jenom řádkové řešení IF(AND(B1 = "auto";C1="benzín")=1;A1;"") které vykopírujete do pomocného sloupce. Následně dostanete hodnoty bez nul a ty soustředíte pomocí RANK.

Editoval neutr (15. 8. 2017 06:08:41)


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

Offline

#3 15. 8. 2017 08:36:53

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

Re: array funkce - filtrování?

Jde to

(V případě složitějších vzorců se vyplácí výpočet nejprve vytvořit v listu pomocí obyčejných vzorců a až to bude fungovat, tak to naskládat do jednoho vzorce. V pomocném sloupci místo nul bude "velké" číslo, správné hodnoty vyberete funkcí small a kontrolujete, jestli máte vše, nejlépe přes countif. Maticový vzorec postavíte stejně.),

ale ...  složitý vzorec, pomalé, pole výsledků stejně zabere dost velkou oblast, ...

Pokud uvažujete stovky tisíc řádků, je to spíše dotaz na base forum.
Jinak stejnou službu poskytnou normální filtry.
Také lze použít kontingenční tabulku (použít jem řádková pole a odfiltrovat nuly).

Offline

Zápatí