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

#1 9. 3. 2017 14:08:21

mirozm
Člen
Registrace: 9. 1. 2006
Příspěvků: 49

súčet hodnoty premennej VYŘEŠENÝ

Dobrý deň,
možno je to len triviálna záležitosť, resp mi možno niečo ušlo.
Prosil by som o radu :
cislo je ako integer a má hodnotu napríklad 5
hodnota cislo je braná z bunky
riadok je as integer

riadok=cislo+1
print riadok

výsledok je 51

ako dosiahnem  aby výsledok bol 6

Ďakujem

Editoval mirozm (9. 3. 2017 16:12:57)


LO 5.1.6  platforma Ubuntu-linux 16.04

Offline

#2 9. 3. 2017 14:33:03

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

Re: súčet hodnoty premennej VYŘEŠENÝ

cislo = sheet.getcellbyname("A1").VALUE (jestli jste nazapomněl na to VALUE nakonci.


LibreOffice 5.4.

Offline

#3 9. 3. 2017 15:08:30

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

Re: súčet hodnoty premennej VYŘEŠENÝ

No ono může být i číslo v sešitě pod formátem textu. Takto se spojují stringy - tedy Když je v sešitě opravdu číslo (je zarovnané doprava) tak se musí přičíst jako číslo. Můžete například otestovat =Value(bunka) - vzorec dáte do vedlejší buňky a na tu buňku nasměrujte makro.
    Faktem je že když by se přičítala jednička k té pětce tak jak popisujete, je to načteno jako string ale číselné načítání by to načetlo jako nulu - výsledek by byl 1. Takže nejprve otestujte deklaraci proměnné jak uvádí pan Trnka a když by to nechodilo otestujte vzorcem =Value(bunka) převést na číslo. Tohle se stává typicky když se načítá ze zdroje CSV.
    Následně otestujte riadok = Val(cislo)+1 - tedy už v makru. Záleží celkem na deklaraci buňky ale pokud to číslo v textové podobě načte tak ho převést dodatečně práve pomocí Val().


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#4 9. 3. 2017 16:11:36

mirozm
Člen
Registrace: 9. 1. 2006
Příspěvků: 49

Re: súčet hodnoty premennej VYŘEŠENÝ

Veľmi pekne ďakujem obom,
v zošite nebolo potrebné nič prerábať a v makre som to s Vašou pomocou vyriešil nasledovne:

bunka=list.GetCellByPosition(11,0)'L1
cislo=trim(bunka.value)
riadok= Val(cislo)+1
print riadok


LO 5.1.6  platforma Ubuntu-linux 16.04

Offline

#5 9. 3. 2017 17:19:11

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

Re: súčet hodnoty premennej VYŘEŠENÝ

to je zajímavé že to funguje. U mě ne. U mě zafungovalo toto jak pro číslo tak pro text:
cislo = val(list.getCellRangeByName("A1").string)
print cislo + 1


tento řádek cislo=trim(bunka.value) by měl v případě že je v "bunce" text vrátit nulu, pozdější val(cislo) už by nemělo nijak zafungovat aby to udělalo z nuly pětku. No a pokud je v bunce číslo pak by mělo fungovat rovnou cislo = bunka.value bez dalších úprav.


Nicméně to co jsem psal jako první příspěvek byla blbost :-)


LibreOffice 5.4.

Offline

#6 9. 3. 2017 17:36:53

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

Re: súčet hodnoty premennej VYŘEŠENÝ

Příkaz TRIM ořezává mezery před a za textem (nikoliv uvnitř textu). Takže pokud jsou data skutečně z CSV nebo podobného zdroje mohou vznikat textové podoby čísla (dík mezerám).
    Takže autor přišel na to, že musí nejdříve očistit výraz a následně převést na číslo. Bohu žel když by se vyskytla mezera nebo netisknutelný znak uvnitř výrazu, musel by ještě oditerovat všechny nečíselné znaky. To není takový problém jako na to přijít proč číslo nefunguje jako číslo.


    Víme například že LO umí v sešitě počítat s textovou formou (ale ne vždy). Ale při zpracování makrem totéž nemusí fungovat. Tohle se dost dobře nedá systémové vyřešit takže zůstává na invenci a zkušenosti uživatele. Je ale možné že se chovají různě Vaše verze LO. Autor má 5.1.6 (tuším stable verze pro Ubuntu) a Vy máte 5.2.2 - Tedy jestli platí přednastavené číslo verze. Ale myslím že konec dobrý - všechno dobré.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 9. 3. 2017 17:43:12

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

Re: súčet hodnoty premennej VYŘEŠENÝ

no jo jenže funkce pracuje zevnitř ven tzn. řádek cislo=trim(bunka.value) nejdříve vezme z buňky číselnou hodnotu a potom se snaží ji ořezat, což je v podstatě nesmysl. Opravdu to nechápu. Ale jestli to funguje tak OK.


LibreOffice 5.4.

Offline

Zápatí