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

#1 11. 12. 2009 11:10:57

zombie
Člen
Registrace: 14. 11. 2008
Příspěvků: 106

jak prevest textove bunky jako '2 na numericke

Ahoj, vim, ze to muzu udelat pres funkce, ale potreboval bych nejakou quick'n'easy cestu :-)

Po importu z textoveho souboru mam vsechna cisla ulozena jako 'cislo, napr dvojka je "'  2". Nevite, zda nejde nejak rychle odstranit ta uvozovka uvozujici retezec (napriklad nahrazenim uvozovky ' za nic - ale to nefunguje :-)

Pokud je cislo desetinne a dam nahradit vsechny tecky (.) za carky (, ), tak se retezce automaticky zmeni na cisla, ale pokud jsou cisla bez desetinne tecky, tak to pouzit nejde.

Problem je v tom, ze musim z textaku do calcu vsechno importovat jako text, protoze jinak mam pak z nekterych cisel datumy, hodiny, atp :-)

Jelikoz se s tou tabulkou dela hodne veci a je to potreba delat rychle, pouziti funkce mi prijde prilis neprakticke, zvlaste pro BFU, takze rad bych to jen nejak nahradil, aby to lidi mohli delat sami a nemuseli si pridavat pomocny sloupecek s funkci a pak na puvodni misto prekopirovat zpet jen hodnoty bez vzorce...

Diky za odpoved.

Offline

#2 11. 12. 2009 11:19:13

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

Re: jak prevest textove bunky jako '2 na numericke

Zkuste nahradit pomocí reg. výrazu - najít: ([0-9])   a nahradit: $1

Offline

#3 11. 12. 2009 11:25:33

zombie
Člen
Registrace: 14. 11. 2008
Příspěvků: 106

Re: jak prevest textove bunky jako '2 na numericke

Bomba, to je ono, diky, akorat to chce nahradit za $0 ;-)

A kdyz si budu jeste hodne vymyslet, co bych musel nahrazovat pro cisla jako "'  1 520 234"? Nechci nejdriv nahradit vsechny mezery za nic a pak teprv ten regexp... V regexpu to urcite nejak pujde jednim krokem, ale nejsem v tom zrovna machr :-)

Editoval zombie (11. 12. 2009 11:30:42)

Offline

#4 11. 12. 2009 14:43:20

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

Re: jak prevest textove bunky jako '2 na numericke

Až tak super to není. Alespoň ve verzi 3.1.1. calc zřejmě obsahuje chybu. Takže číslo (bez mezer) se opraví: maska: ([0-9]+) a nahradit: $1 

Pokud se použije např. maska [ ]*([0-9]+) tak se všechny výskyty masky nahradí hodnotou jejího prvního výskytu.

Navíc záměna funguje jinak při krokování vyhledat-naradit a jinak při nahradit vše.

Offline

#5 11. 12. 2009 16:58:37

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

Re: jak prevest textove bunky jako '2 na numericke

zombie napsal(a)

A kdyz si budu jeste hodne vymyslet, co bych musel nahrazovat pro cisla jako "'  1 520 234"?

Go OpenOffice 3.1.1 již provádí automatické přetypování ve vzorcích, takže výše uvedené bere jako číslo

Offline

#6 11. 12. 2009 17:09:28

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

Re: jak prevest textove bunky jako '2 na numericke

Do a1 vložím '1
do a2 vložím '2
do a2 vložím =a1+a2

Co dostanete? (já 0) (oo 3.1.1)

Offline

#7 11. 12. 2009 17:09:53

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

Re: jak prevest textove bunky jako '2 na numericke

Pokud jde o Najít a nahradit, nefunguje vám hledat regexp [' ]* a nahradit vše za prázdno? Můžete sem dát ukázkový soubor v ODS, který potřebujete co nejjednodušeji "opravit" ?

Offline

#8 11. 12. 2009 17:11:11

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

Re: jak prevest textove bunky jako '2 na numericke

lp. napsal(a)

Do a1 vložím '1
do a2 vložím '2
do a3 vložím =a1+a2

Co dostanete? (já 0) (oo 3.1.1)

Já 3 :-) GO OOo 3.1.1
to automatické přetypování je ohlášeno pro 3.2, ale Go OOo to má asi už i v 3.1.1

Editoval hanus (11. 12. 2009 17:13:20)

Offline

#9 11. 12. 2009 17:37:53

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

Re: jak prevest textove bunky jako '2 na numericke

hanus napsal(a)

Pokud jde o Najít a nahradit, nefunguje vám hledat regexp [' ]* a nahradit vše za prázdno?

Nejde o vymazání mezer. Chybně funguje celá funkce najít a nahradit s reg. výrazy. Příklad:

Mám číslo: 987654321
Najít: ([0-9])     Nahradit: $1

Tlačítko nahradit: dostanu 987654321
Tlačítko nahradit vše: dostanu 999999999

Jiný příklad (mažu mezery mezi něčím):

Najít : ([^ ]*)[ ]*([^ ]*)
Nahradit: $1$2

Tlačítko Nahradit vše
Pro "A B" dostanu AB  (správně) 
Pro "A" dostanu AA    (proč?)

Pro makra jsem chybu zatím netestoval

Offline

#10 11. 12. 2009 18:18:41

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

Re: jak prevest textove bunky jako '2 na numericke

lp. napsal(a)

Mám číslo: 987654321
Najít: ([0-9])     Nahradit: $1

Tlačítko nahradit: dostanu 987654321
Tlačítko nahradit vše: dostanu 999999999

Ano, v OOo "Nahradit vše" pro regexp funguje jinak, než s/([0-9])/$1/g
OOo do $1 uloží první shodu a v dalších cyklech pak už obsah $1 neaktualizuje, to by se dalo považovat za chybu (ale třeba by vysvětlili, že to chápou jinak :-))

lp. napsal(a)

Najít : ([^ ]*)[ ]*([^ ]*)
Nahradit: $1$2

Tlačítko Nahradit vše
Pro "A B" dostanu AB  (správně) 
Pro "A" dostanu AA    (proč?)

Tak tady toto se chová naprosto nepředvídatelně :-) nekdy mi to A nechá v pořádku, někdy hodí na AA, někdy AAAA dá na AAAAAAAA :-) a to jen klikám do sešitu a na Nahradit vše. Někde tam budou mít v algoritmu zapomenutou nebo nadbytečnou +1 nebo -1 nebo něco v tom smyslu :-)

Offline

Zápatí