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

#1 14. 3. 2009 15:09:40

trtek
Člen
Registrace: 14. 3. 2009
Příspěvků: 1

Jak najít řetezec a počet jeho výskytů

Potřebuju zjsitit, kolikrát se v udané oblasti vyskytuje určitý výraz (např. DX). Jakou funkci mám použít? Zkoušel jsem COUNTIF, tahle funkce však zjistí jen počet buněk s hledaným řetězcem, ale v některých buňkách může být hledaný řetezec vícekrát.

Offline

#2 16. 4. 2009 13:46:41

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Jak najít řetezec a počet jeho výskytů

Obávám se, že na toto jednoduchá funkce není. Buďto by se musela použít nějaká složitější konstrukce pomocných výpočtů/vzorců, nebo naprogramovat tuto funkci v OpenOffice Basicu.

Offline

#3 18. 4. 2009 17:30:37

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Jak najít řetezec a počet jeho výskytů

Funkce pro určení počtu výskytů podřetězce v hlavním řetezci - jako argumenty jsou buď přímo řetězce, nebo odkazy na buňku, např

=INSTRCOUNT(A1;"bx") 
function instrcount(hlavni as string, podretezec as string) as integer

	zacatek = 1
	instrcount = 0

	do while instr(zacatek, hlavni,podretezec)
		instrcount = instrcount + 1
		zacatek = instr(zacatek, hlavni, podretezec) + len(podretezec)
	loop

end function

Tuto funkci musíte nejprve vložit přes Nástroje->Makra->Správce maker->OpenOffice.org Basic

Funkce nehledí na velikost písmen (dá se to ale upravit).

=INSTRCOUNT("aa aaaa aa";"aa") vrátí 4

Odskoušeno v OO.o 2.0 a 3.0.1
Soubor ke stažení: Funkce Instrcount.01

Přidal jsem ještě funci, kde jako vstupní parametr je celá oblast buněk místo jedné buňky výše:

=INSTRCOUNTRANGE(A1:C4;E4)

Soubor ke stažení: Fukce Instrcount.02

Dejte vědět, jestli je to to, co potřebujete.

Editoval hanus (19. 4. 2009 09:46:01)

Offline

#4 29. 4. 2009 22:09:04

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Jak najít řetezec a počet jeho výskytů

Tak mě při psaní dalšího dílu o funkcích Calcu napadla taková finta pomocí SUBSTITUTE. Je ale potřeba tolik pomocných buněk, kolik jich je v té dané oblasti, která se má prohledat.
Řešení najdete v článku Funkce pro práci s textem

Editoval hanus (4. 5. 2009 09:42:42)

Offline

Zápatí