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

#1 2. 2. 2015 14:07:14

gucky
Člen
Registrace: 18. 4. 2008
Příspěvků: 74

countif podle podřetězce- VYŘEŠENO

Mám tabulku, kde např. ve sloupci B jsou textové řetězce, ve kterých je obsažen názvy zařízení, např. AD9-R10, R10, 7M atd., vždy v jednom řádku může být obsažen jenom jeden typ zařízení, pozice názvu zařízení v řetězci není pevně daná (např. "Zařízení AD9-R10....", "Měřidlo R10...." atd.).

Jak má vypadat podmínka v COUNTIF(oblast;podmínka), když potřebuju spočítat počet řádků, které obsahují AD9-R10, pak počet řádků s R10 atd.

Editoval gucky (3. 2. 2015 06:52:40)

Offline

#2 2. 2. 2015 16:27:47

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

Re: countif podle podřetězce- VYŘEŠENO

Tohle je problém, který lze zřejmě řešit jenom pomocným sloupcem pro každou buňku samostatně. Sečíst pak výsledky pomocného sloupce.
     Vyhledávat jen část obsahu buňky lze pomocí SAERCH, nebo FIND. Ovšem toto jsou textové funkce, které sami o sobě prohledávají buňku už jako řetězec, tedy jako pole s jedním rozměrem. Tohle nejde postavit tak, aby se hledalo ve dvou rozměrném poli. Tohle totiž dělá také COUNTIF, ale nad polem buněk. Je sice možné, že by se našlo řešení pomocí maticového vzorce, ale to bych musel testovat dost dlouho a myslím, že zbytečně. Možná odpoví lp., ale já to nevím.
     Zato vím, ře lze snadno postavit pomocný sloupec ze vzorců FIND, nebo SEARCH.
Například hledaný text v buňce A5 - vzorec v buňce B5

=ISERR(SEARCH("R10";A5))

tato verze vrací logické hodnoty 0/1 (nebo logické PRAVDA/NEPRAVDA), ale nelogicky opačně. Pokud tam je "R10" vypíše "0" (NEPRAVDA). Potom musíme pomocí COUNTIF hledat počet "nul" - například :

=COUNTIF(B1:B100;0)

a podobně.
     Vzorec SEARCH, nebo FIND lze ponechat samostatně a pak hledat hodnotu větší než nula. Vzorce bez ošetření chyby vyhazují chybu (#VALUE) pokud se tam řetězec nenalézá. Pokud se tam nalézá vypíšou pozici. To je číslo nejméně s jedničkou. (FIND hledá CASE SENSITIVE) takže odlišuje velikost písmen, SEARCH najde každý tvar například r10 i R10.
     Také se dají tyto textové vzorce použít ve funkci IF a jejich hodnotu negovat, ale to je zbytečné pokud budete používat COUNTIF kde můžete zadat hledání nuly - ale musíte vědět, že hledáte nulu (NEPRAVDA) jako pozitivní výsledek. To není moc dobré, ale je možné to udělat z principu jinak.


PS :  Pro klid duše jsem otestoval matici s textovým vyhledáváním a výsledek je stejný jako pomocný sloupec. Rozdíl je v tom, že matici zadáme jenom jednu a ona se rozbalí do sloupce. Nad tím stejně musíme udělat nějakou sumaci. To někdy umožní skutečně součet za pole v jediné buňce při použití matice. Ne vše ale jde udělat. Musel bych opravdu hledat a bylo by to nejspíš krkolomné řešení.

Editoval neutr (2. 2. 2015 16:44:26)


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 2. 2. 2015 16:31:59

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

Re: countif podle podřetězce- VYŘEŠENO

Dobrý den, zkusil bych prohlédávání pomocí regulárních výrazů třeba takto =COUNTIF(B1:B100;".* R10.*")
nebo takto =COUNTIF(B1:B100;".*AD9-R10.*") přičemž text " R10" by se měl do vyhledávání zadat s mezerou aby se odlišil od "-R10" s pomlčkou. Hodně záleží jak přesně ta vaše data vypadají, zda toto lze použít nebo ne. Regulární výrazy je třeba mít povoleny NÁSTROJE -> MOŽNOSTI -> CALC -> VÝPOČTY


... trochu krkolomné zadání lze zjednodušit odkazem. Třeba takto =COUNTIF(B1:B100;".*"&A1&".*") kde v A1 si jednoduše zadáte vyhledávané R10 (s mezerou před) či AD9-R10 atp.

Editoval ludviktrnka (2. 2. 2015 16:50:06)


LibreOffice 5.2.2.2

Offline

#4 3. 2. 2015 06:52:01

gucky
Člen
Registrace: 18. 4. 2008
Příspěvků: 74

Re: countif podle podřetězce- VYŘEŠENO

Chlapi, dík za váš čas a za zájem pomoct s řešením.
Hřebíček na hlavičku trefil ludvik, dík moc, funguje to. Nenapadl by mě ani tento filtr, ani zapnutí regulerních výrazů.
A dík za upozornění na R10 a -R10. Jo, musím to pořešit s tou mezerou.

Offline

#5 3. 2. 2015 09:35:05

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

Re: countif podle podřetězce- VYŘEŠENO

gucky napsal(a)

Chlapi, dík za váš čas a za zájem pomoct s řešením.
zapnutí regulerních výrazů.
A dík za upozornění na R10 a -R10. Jo, musím to pořešit s tou mezerou.

Nevím, jaké texty máte, například mezera nepomůže u textu "(R10)", chybně vyhodnotí text "R100-kasdk", ... Mrkněte se na regulární výrazy trochu podrobněji. Uvedené příklady se dají řešit třeba výrazem

=COUNTIF(B1:B100;"(^|.*[ (])"&A1&"\b.*") 

(Najděte si co to dělá.)

Regulární výrazy jsou hodně silný nástroj, ale je to trochu alchymie, záleží na datech.

Offline

#6 3. 2. 2015 13:03:14

gucky
Člen
Registrace: 18. 4. 2008
Příspěvků: 74

Re: countif podle podřetězce- VYŘEŠENO

Dík i za pokus od lp., ale to už je vyšší dívčí.
Nikdy sem sa regulárníma výrazama nezabývál, tož mě to přijde jak svahilština. Ani teď na to nemám čas, takže využiju rady ludvika, fungu je to.
A problém mezeraR10 (vers. AD9-R10) řeším podmínkou ".*"&" "&A1&".*"
Co se týká možných kolizí s AD9, mezeraAD9, -AD9 či (AD9 atd., tady už si mosím poradit tým, že zprdnu kolegy (je nás víc, co danou tabulku vyplňujeme).

Offline

Zápatí