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

#1 12. 12. 2012 09:33:36

wzemlicw
Člen
Registrace: 12. 12. 2012
Příspěvků: 3

Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO

Dobry den,
rad bych touto cestou pozadal o radu zkusenejsi, potreboval bych vytvorit vzorec, ktery umi vyhledat v bunce text z predem vytvoreneho listu slov tak, aby kdyz se v bunce text z listu slov nachazi aby vysledek byl pravda nebo nepravda..Myslim si, ze tam bude funkce if, find nebo neco takoveho..nepodarilo se mi to udelat z celeho "vyhledavaciho vstupu".  Mockrát dekuji za radu, kdo mi poradi!

screen pro predstavu:

Screen zde

___________________________________________
Značím jako vyřešené

;o)

Editoval sedlacekdan (18. 12. 2012 21:55:04)

Offline

#2 12. 12. 2012 10:58:43

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

Re: Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO

Vzorec potřebuje splnit "syntaxi". Takže příklad pro Find: Máme v buńce A1 text "máme nové auto". Hledaný text je v buňce třeba C1 - "auto". Vzorec například v E1 pak vypadá následovně :

 =FIND(C1;A1;1)

Správný výsledek vrátí číslo pozice, nesprávný #VALUE!. Můžete použít pro jeden případ vzorec

=ISERR(FIND(C1;A1;1))

pro druhý text například

=ISERR(FIND(C2;A1;1))

a tak dál. Tyhle vzorce vrací "Pravda" - ale na dotaz zda je to chyba - takže když je tam chyba dostanete opačnou hlášku "PRAVDA". Má to ale také výhodu. Když vynásobíme tyto logické výsledky (pro více možných hledání), zvítězí "nula". Když se mezi množinou možných nenalézá ani jeden správný text dostaneme 1.
Takže například pro dva možné výsledky v buňkách C1 a C2 :

=ISERR(FIND(C1;A1;1))*ISERR(FIND(C2;A1;1))

   Protože potřebujete kopírovat vzorec do různých polí E1...Ex (různé texty v A1...Ax) musíte vybavit vzorce absolutní adresou adresy porovnávaných možností.
- takhle

=ISERR(FIND($C$1;A1;1))*ISERR(FIND($C$2;A1;1))

Pokud trváte na vrácení textové podoby logických hodnot, musíte takhle :
-----------------------------------------------------------------------------

=IF(ISERR(FIND($C$1;A1;1))*ISERR(FIND($C$2;A1;1))=0;"PRAVDA";"NEPRAVDA")

-----------------------------------------------------------------------------
Problém je možné řešit i zcela jinak, ale je pak většinou problém vícenásobné zřetězení vyhledávaných textů pomocí OR a podobně. Textovou podobu logických hodnot vrací také například "syntakticky" neúplné vzorce. Umí to třeba IF bez uvedení druhé varinty (Pro falze). Pak vrací i pro pravdu textovou podobu. Když netrváte na podobě FALSE, TRUE a chcete jiný text, tak prostě změňte texty v uvozovkách (ve vzorci).


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 12. 12. 2012 13:14:38

wzemlicw
Člen
Registrace: 12. 12. 2012
Příspěvků: 3

Re: Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO

Dekuji panu "neutr", funkce funguje jak šarm big_smile jen bych se jeste chtel zeptat: tech hodnot ze kterych se vyhledáva (vyhledavaci vstup) mám cca 40 a mozna bych tam chtel i neco pridat, takze musim rucne vsechny vzorce psat manualne *ISERR(FIND($x$x;Ax;1)).. >> neexistovala by moznost oznacit vsechny bunky a udelat vzorec kratsi? ted prave jsem u 8 vstupni hodnoty a vzorec mi vypada asi takto:

=IF(ISERR(FIND($T$3;Q2;1))*ISERR(FIND($T$4;Q2;1))*ISERR(FIND($T$5;Q2;1))*_
ISERR(FIND($T$6;Q2;1))*ISERR(FIND($T$7;Q2;1))*ISERR(FIND($T$8;Q2;1))*_
ISERR(FIND($T$9;Q2;1))*ISERR(FIND($tT$11;Q2;1))=0;"PRAVDA";"NEPRAVDA")

Dekuji za odpoved!!

Offline

#4 12. 12. 2012 15:43:42

wzemlicw
Člen
Registrace: 12. 12. 2012
Příspěvků: 3

Re: Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO

no tak zrada,. do vzorce se mi vleze pouze 512 znaku.. takze otazka je porad stejna: jak vytvorit kratsi vzorec aby tam bylo neomezeny pocet vyhledavacich vstupu (obrazek)?.. diky kdo se pripoji

Offline

#5 13. 12. 2012 10:40:52

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

Re: Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO

Problém vyřešíte snadno. Použijte pomocné pole, do kterého jen vynásobíte jednotlivé základní vzorce bez podmínky IF. Vejde - li se například do jedné buňky 20 vzorců ze 100, budete potřebovat 5 pomocných buněk. V 6. buňce pak už bude jen součin těch 5-ti pomocných - ve vzorci IF.
Takže příklad: Vše je jak bylo původně, jen v E1 je vzorec =IF(F1*G1*H1*I1*J1=0;"PRAVDA";"NEPRAVDA").
Do pomocné buňky F1 dáte součin =ISERR(FIND($C$1;A1;1))*,,,,*ISERR(FIND($C$20;A1;1))
Do pomocné buňky G1 dáte součin =ISERR(FIND($C$21;A1;1))*,,,,*ISERR(FIND($C$40;A1;1))
a tak dál. Takhle můžete i snadno přidávat hledané pojmy. Pomocné sloupce (ty s pomocnými buňkami) jednoduše skryjete, aly to nerušilo estetický dojem, nebo je dáte až na konec listu (Vložíte mezi E1 a F1 větší počet prázdných sloupců.

  Je otázkou zda v případě velkého počtu hledaných pojmů nebude lepší vytvořit makro. Lze to udělat i snadno nahráváním. Návod jak na makra je v Danově seriálu, nebo i v nápovědě. Pokud bude zájem napíšu postup jak bezpečně nahrát makro s užitím mnoha vzorců. Nahrát vzorce lze, ale musíte pár triků znát. V podstatě se vše spočítá tak jako je to popsáno výše, ale pro každý řádek samostatně. Na konci již zůstane jen text "PRAVDA"......
Makro toto udělá automaticky na každém řádku. Takže tlačítko - 1 stsknutí a můžete vyhodnotit relaci  milion pojmů ve sloupci A proti milionu hesel ve sloupci C. Nejspíš by to netrvalo déle než pár minut

  Trošku odlišnou cestou by bylo užití maticových vzorců, nebo jinak koncipovaných vzorců, ale myslím, že to, co uvádím výše by Vám mohlo stačit. Tedy nedavno jsem něco dělal pro jednoho člověka a ten si liboval v co nejsložitějším řešení - tedy zřejmě pro to, aby někomu dokázal jaký je odborník, nebo odstrašovat kolegy složitostí. Nakonec mi ani nepoděkoval, ani nenapsal, že už to vyřešil. To nic, jen chci říct, že požadavek může být i na super složité maticové řešení doplněné makrem ap.


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

#6 13. 12. 2012 16:36:03

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

Re: Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO

A1:A4 je seznam slov
B1 je buňka, kterou prohledávám

=OR(ISNUMBER(FIND($A$1:$A$4;B1;1)))

Zadejte jako maticový vzorec (vkládá se trojhmatem ctrl-shift-enter)

Offline

#7 14. 12. 2012 17:25:00

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO

lp na to kápl
elegantní a vtipné řešení


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 16. 1. 2013 15:47:29

rejze
Člen
Registrace: 9. 1. 2013
Příspěvků: 51

Re: Vyhledavací vzorec - pomoc se vzorcem - VYŘEŠENO

Nechci zakládat nové vlákno,protože tohle řešení mne zaujalo a chtěl bych na něj navázat následné zpracování,jen nevím jak na to. Mám seznam asi 50ti položek a u každé čárový kód. Ke každému řádku v seznamu jsem přidal vzorec od uživatele ip a do porovnávaných buněk načítám mobilem čárový kód. Když souhlasí s některým v seznamu objeví se mi v příslušném řádku vedle položky výsledek. Toto bych potřeboval vyhodnotit a název položky ze seznamu vypsat vedle načteného kódu. Lze to nějak? Předem díky.

Offline

Zápatí