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

#1 4. 3. 2014 21:35:38

pkopecky
Člen
Registrace: 15. 5. 2012
Příspěvků: 19

operátor "<" v kritériu vyhledávání - VYŘEŠENO

Prosím o pomoc.
Lze u nějaké vyhledávací fce zadat u kritéria vyhledávání operátor "<,>,=" ?
Potřebuji vyhledat hodnotu která je menší nebo rovna 10. Pokud by to šlo zapsat s funkcí VLOOKUP tak by to vypadalo následovně =VLOOKUP(<=10;A1:A100;1;0)

Děkuji za pomoc

Editoval pkopecky (22. 3. 2014 12:55:48)

Offline

#2 5. 3. 2014 06:56:19

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

Re: operátor "<" v kritériu vyhledávání - VYŘEŠENO

Existují takové funkce, ale mají jiný chrakter něžli různé "LOOKUP-y". Raději to popíšu :
HLOOKUP = složení "H" - jako horizontal + LOOKUP
VLOOKUP = složení "V" - jako vertical + LOOKUP
LOOKUP = v "nesprávním překladu" něco jako podívat se, nebo navštívit, ale tohle se správně překládat nedá. Oproti ostatním LOOKUP-ům má výhody, ale také značnou nevýhodu. Musí být seřazen. Za to ale nemusí být vyhledávací oblast kompaktní pole. Jsou to buď 2 sloupce, nebo řádky a tyto nemusí být sousední. Zato musí být stejně "dlouhé". Také by měly odpovídat jednotlivé indexy - asi jako když mezi kompaktní úsek A1:B50 vložíme nějaké sloupce. Index A1 tak odpovídá indexem původnímu B1 - což po vložení sloupce mezi dva sousední může být například C1. Tak tohle umí jen LOOKUP. V těch dvou ostatních případech musí být oblast hledání kompaktní. Za to naopak umožňují také vyhledávat v "nesetříděném" úseku. Primárně kvůli hledání je lepší úsek seřadit, ale při výběru podmínky "False" toto není potřeba (když by tato možnost nebyla, tak by asi nemusely HLOOKUP ani VLOOKUP existovat).


     Jenže tyto vzorce jsou všechny typické tím, že vyhladají jen určitou relaci "=". Když je podmínka splněna vrátí hodnotu ze sousedního sloupce. A v Tom je ten problém. Tyto funkce nedělají sumaci jako takovou. Prohledávají a vracejí "něco" na základě vyhodnocení TRUE - ale relací "=".


     To co pohledáváte jsou vzorce pro =COUNTIF(A1:A100;"<=10"), nebo  =SUMIF(A1:A100;"<=10"). Konkrétně asi COUNTIF vyhovuje Vašim potřebám - vrací počet takových hodnot. SUMIF zase sečte všechny takové hodnoty - což je asi od věci daleko.


     Jestli ovšem nehledáte sumaci jako výsledek, ale přímo vrácené položky, tak jak dělají originálně LOOKUP-y, tak existují zřejmě 2 cesty. Buď zadávat maticovým vzorcem, nebo vyhodnocovat každý řádek samostatně - tedy v pomocném sloupci a nejlépe asi pomocí vykopírování vzorce =IF(A1 <= 10;B1;"").
     Maticové vzorce popisuje nejlépe uživatel .lp a vyhledáte si to ve fóru. Já to mám také někde poznamenané, ale většinou raději také spustím vyhledávíní - karta na téhle stránce. Zadejte "Maticové vzorce", nebo "Matice". Můžete také zadat hledání podle autora (.lp = .LP ale malými písmeny).

Editoval neutr (5. 3. 2014 06:56:48)


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 5. 3. 2014 20:47:32

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

Re: operátor "<" v kritériu vyhledávání - VYŘEŠENO

Použijte místo lookup MATCH:

=MATCH(1;A1:A100<=10;0)

a uložte to jako matici "trojhmatem" 'ctrl-shift-enter'
(Ta hledaná '1' je hodnota 'Pravda')

Najde to pozici první hodnoty odpovídající požadavku.
K případnému dohledání odpovídajích hodnot v tabulce použijte funkci INDEX.

=INDEX(A1:A100;MATCH(1;A1:A100<=10;0))

a zase jako matice - 'ctrl-shift-enter'

Pokud jsou hodnoty ve sloupci A setříděné, stačí

=VLOOKUP(10;A1:A100;1;1)

(najde to *poslední* hodnotu, které je menší nebo rovna 10)

Offline

#4 5. 3. 2014 21:33:01

pkopecky
Člen
Registrace: 15. 5. 2012
Příspěvků: 19

Re: operátor "<" v kritériu vyhledávání - VYŘEŠENO

lp.: Moc moc děkuji, funguje to skvěle
neutr: děkuji za vyčerpávající odpověď  a nasměrování

Offline

#5 14. 3. 2014 19:46:50

pkopecky
Člen
Registrace: 15. 5. 2012
Příspěvků: 19

Re: operátor "<" v kritériu vyhledávání - VYŘEŠENO

lp.:
vým že jsem toto téma v munulusti označil za vyřešené, ale potřebuji ještě jednu radu.

Ve vzorci =MATCH(1;A1:A100<=10;0) potřebuji hodnotu A100 zadat pomocí fce =Address.

Jak jsem pochopil, tak pokud nějakou hodnotu ve funkci nahrazuji další funkcí tak je musím spojit pomocí znaku & a odělit od standartně zapsaných hodnot "" tudíž jsem došel k zápisu
=MATCH(1;"A1:"& ADDRESS(B1;1;4)&"<=10";0)
bohužel mi to nefunguje. A po stisku Ctrl+Shift+Enter se v buňce zobrazí chyba:504 (chyba v seznamu parametrů)

prosím poraďte kde dělám chybu

děkuji

Editoval pkopecky (15. 3. 2014 07:31:45)

Offline

#6 16. 3. 2014 15:30:32

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

Re: operátor "<" v kritériu vyhledávání - VYŘEŠENO

Nevím, jestli to chápu, tak trochu obecněji.

ve výrazu A1:A100 je ":" operátor. Důsledkem je to, že před ním i za ním může být výraz, který je odkazem.

V calcu jsou 3 funkce, které vrací odkaz: INDIRECT, OFFSET a INDEX.
(tj. funkce ADDRESS nevrací odkaz)

Uváděnému výrazu by mohl odpovídat výraz
A1:INDEX(A1:A1000;B1)

Tj. hledání může vypadat takto:

=INDEX(A1:A100;MATCH(1;A1:INDEX(A1:A100;B1)<=10;0))

Editoval lp. (16. 3. 2014 23:29:43)

Offline

#7 16. 3. 2014 18:39:09

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

Re: operátor "<" v kritériu vyhledávání - VYŘEŠENO

Jsme u toho. Maticové vzorce jsou velice výkonné, ale samy o sobě bez složených závorek hlásí většinou chybu. Když se udělá trojhmat tak vzorec funguje. Když však uděláte syntaktickou, nebo sémantickou chybu tak ji velice těžko odhalíte. Zejména sémantickou chybu nejste schopen ani najít a vzorec Vám může dávat nepravdicé výsledky. Navíc například transparentně pojmenované vzorce umí ve své maticové podobě dělat úplně něco jiného, nežli bysme očekávali. Také mám dojem, že to co může chodit v LO, nebude chodit v AOO.
     Řetězcově skládané adresy, nebo někdy i jiné výrazy mohou chodit v běžném vzorci, ale v maticovém nemusí. Některé vzorce (MATCH je mezi nimi) podporují regulární výrazy - matice by to měly podporovat také a přes to jsem se setkal s tím, že to nefungovalo.


     Jestli mohu doporučit, tak z principu si udělat klasické řešení (pomocným sloupcem) které jste schopen překontrolovat co do funkčnosti a totéž potom maticí.
     V buňce sl. "B" máte co? Možná se ukáže řešení. Doporučuji si zase nejprve v jiném sloupci ověřit

="A1:"& ADDRESS(B1;1;4)

respektive

="A1:A"&B1

nebo jiný výraz. Ani to však není zárukou, že to bude chodit zabudované ve vzorci. Ale když to chodit samo nebude je jisté, že ve vzorci to chodit také nebude.

Editoval neutr (16. 3. 2014 18:39: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

#8 22. 3. 2014 12:55:34

pkopecky
Člen
Registrace: 15. 5. 2012
Příspěvků: 19

Re: operátor "<" v kritériu vyhledávání - VYŘEŠENO

Dekuji za odpoved.
Uz jsem to vyresil pres makro.

Offline

Zápatí