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

#1 20. 7. 2010 10:48:39

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Ahojte,
potřeboval bych aby se mi v jedné buňce objevil buď jeden nebo druhý vzorec (aby fungoval,ne jenom jeho zápis-prostě aby ta buňka měla v sobě normálně vzorec) -jestli vzorec ten nebo onen, to by záleželo na mě, který zvolím.
Pro to bych chtěl např. využít objekt formuláře "zaškrtávací políčko".
Vložím si tento objekt do listu, dám na objekt pravý čudlík myši,v záložce "data" nastavím spojenou buňku(A1) a nastavím "referenční hodnota (zapn)" na vzorec "=4*B1"(bez uvozovek) a nastavím "referenční hodnota (vypn)" na "=2*B1" (bez uvozovek). Zavřu nastavení. Vypnu navrhování formuláře(aby se zaškrtávací pole stalo funkční) a zaškrtnu políčko a v A1 se objeví "=4*B1" . Když to odškrtnu tak se v A1 objeví "=2*B1", ALE bohužel vzorce nejsou aktivní-jsou tam asi jako text a já bych potřeboval aby se tam objevila vypočtená hodnota daného vzorce. (v B1 je např číslo 6, takže by se v A1 mělo objevit č. 12 nebo 24)

Ovšem opravdu potřebuju aby tam ten vzorec byl(ne nutně v A1-prostě ve výsledku v nějaké jedné buňce aby se střídaly vzorce),protože pomocí makra tuto buňku kopíruju dál a ta hodnota (č.12/24) se časem mění-podle navázaných buněk v tomto vzorci.

vlastně hledám opak funkce FORMULA - aby udělala z textu funkční vzorec

Díky za rady

Editoval dech (20. 7. 2010 16:12:32)


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#2 20. 7. 2010 19:23:58

Roman Toman
Člen
Registrace: 19. 7. 2008
Příspěvků: 297

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Nech som skúšal ako skúšal, neprišiel som na to ako to urobiť so zaškrtávacím políčkom.
Ale skúsil som to inak možno by to pomohlo:

Voľba vzorca.ods

Funguje to na dve prepínače. A spúšťa dve makrá na striedačku. Jediná nevýhoda je v tom, že podmienkou fungovania je aby kurzor bol na tej bunke kde sa má ten vzorec meniť (v makre je nastavená na A1). Takže kdekoľvek sa kurzor v dokumente nachádza, po voľba jedného, alebo druhého tlačidla skočí na A1 a spustí makro, ktoré tam vloží vzorec.

Jediné čo zostane na Vás je upraviť vzorce v makrách a prípadne odkaz na tú bunku kde sa má vzorec meniť.

Bohužiaľ na jednoduchší spôsob som neprišiel. Dúfam, že to trošku pomôže.

Po načítaní súboru je treba vypnúť režim návrhu.

Editoval Roman Toman (20. 7. 2010 19:35:30)


Win 10 PRO 64, LibreOffice

Pokiaľ to vyriešilo váš problém označte prosím svoj príspevok ako VYRIEŠENÝ.
Ako označiť vyriešenú tému

Offline

#3 20. 7. 2010 21:33:30

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

tak to mě přivádí na myšlenku - zda by mohl někdo napsat podobné makro jako napsal Roman - které řekne, že se má na dané buňce objevit daný text/hodnota/vzorec   namísto toho aby v tom makru bylo pohybování kurzorem:

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

tak aby právě v makru nebyl ten pohyb kurzorem....prostě aby se číslo objevilo na dané buňce "z čista jasna" smile

tuto změnu oproti Romanovému makru chci jen kůli rychlosti provedení makra a menším komplikacem s kurzorem


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#4 21. 7. 2010 17:19:51

Roman Toman
Člen
Registrace: 19. 7. 2008
Příspěvků: 297

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Môže byť takto?

Upravená verzia

Teraz vloží vzorec do bunky A1 nech je kurzor kdekoľvek na liste. Po uložení dokumentu zstane zachovaný stav hodnoty bunky A1 a aj stav prepínačov.
Stačila minimálna úprava makier.
Upozorňujem, že nie som žiadny programátor, takže makrá sú bez štábnej kultúry.

Vizuálny vzhľad už nechám na Vás.

Editoval Roman Toman (21. 7. 2010 17:32:25)


Win 10 PRO 64, LibreOffice

Pokiaľ to vyriešilo váš problém označte prosím svoj príspevok ako VYRIEŠENÝ.
Ako označiť vyriešenú tému

Offline

#5 23. 10. 2010 20:55:16

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

jo, presne! diky!


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#6 3. 1. 2012 15:18:10

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

ahojte, po dlouhé době se vracím k tomuto tématu. Cíl je stejný - navolit v bunce takový či onaký vzorec, ALE bez maker (potřebuju takovýto vzorec,který se dokáže podle sousední buňky přizpůsobit-zvolit vzorec A nebo B)roztáhnout na 1000 řádků. Vím, asi bych mohl použít IF - ale to je výběr mezi 2 vzorci (ano vím-mohu vnořovat další IF do IF), ale potřebuju mít výběr z např. 10 vzorců - v dané bunce se "objeví" jeden z těch deseti-podle okolních bunek...a toto delat pomocí IF je už dost nepřehledné.
Tak mě napadá- lze z textu vytvořit vzorec??
Totiž pomocí dokážu pomocí různých vzorců sestavit výsledný variabilní vzorec - ten co potřebuju, akorát se chová jako text a tím pádem mi "nevyhodí" žádný výsledek...viz. odkaz
ukazka_volby_vzorce.ods

bylo by to vyřešeno, kdyby nějak šlo text v buňce, který se tváří jako vzorec opravdu "aktivovat" - aby fungoval jako vzorec.


____________________________________________________________________________

Přeuložil jsem Váš soubor do Wiki, aby byl stále přístupný

;o)

Editoval sedlacekdan (3. 1. 2012 17:19:47)


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#7 3. 1. 2012 17:16:32

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Zkuste upravit následovně:

pomocí prvního VLOOKUP vyhledávejte druhý VLOOKUP.

Funkce VLOOKUP je ovšem náročnější na výpočet a při opravdu velkém počtu funkcí může déle trvat načítání a přepočítávání vzorců.

Upravený soubor zde:

Ukázka volby vzorce 2


;o)


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 3. 1. 2012 18:15:09

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Díky! Ovšem, jak vidím tak jsem podcenil zjednodušení mého problému - můj problém je složitější a tak jsem ho zjednodušil-ale špatně. Proč nemůžu použít tvoje řešení snad pochopíš z mého aktualizovaného souboru:
ukazka_volby_vzorce.ods

a stále ideální a vůbec bych řekl obecná otázka zůstává - zda-li lze z textu co vypadá jako vzorec opravdu udělat funkční vzorec.


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#9 3. 1. 2012 18:23:26

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Ahoj. Ten problém asi bude úplně jinde. Pokud chceš takto řešit asi tisíc řádků, pak za předpokladu, že výsledky čteš z "průsečíkového grafu" - pak budeš mít zřejmě graf dvojic celku minimálně 46 - ale spíš 49 že?. Na to se dá postavit systém unikátních dotazů. Jestli jde o něco takového, tak mi pošli údaj kde je pole grafu (libovolný čtverec, obdélník ap) a popiš kde má být sloupec dotazu a co má vyhodnotit. Dělám právě na návodech jak na rozsáhlá pole unikátních (a podobných) vzorců.


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

#10 3. 1. 2012 18:46:32

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

uf...sry ale jsem evidentně o nějakou ligu níž :-)  -stěží rozumím tomu co píšeš :-)
chtěl bych ti tu informaci poskytnout(údaj kde je pole grafu)-ale nevím co si pod tím představit. Prostě mám zjednodušený(o těch 1000 řádků) problém a ted jak ho vyřešit - obdelníků bych v mém sešitě našel dost, ale který je ten který ty potřebuješ nevím :-)
Pokud budeš mít semnou nervy tak mě nějak naved na to co by si potřeboval vědět-jak mam urcit ten obdelnik nebo co.
Pokud by šlo o můj dotaz - z textu vzorec - šlo by to nějak?  něco jako INDIRECT (když do něj zadám text "A1" tak výsledek bude obsah buňky A1)-akorát pro vzroce

Editoval dech (3. 1. 2012 18:47:12)


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#11 3. 1. 2012 18:49:25

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Do C2:

=INDEX($K$2:$M$6;MATCH(A2;$J$2:$J$6;1);MATCH(B2;$K$1:$M$1;1))

Matice a pole nastavte podle své potřeby.

Pokud je ve sloupci B uvedeno číslo sloupce pro vyhledání, pak je to jednodušší:

=INDEX($K$2:$M$6;MATCH(A2;$J$2:$J$6;1);B2)

nebo

=vlookup(A2;$J$2:$M$6;B2+1;1)

Inverzní funkce k funkci FORMULA není. Bez makra to nepůjde.

Editoval lp. (3. 1. 2012 19:01:03)

Offline

#12 3. 1. 2012 18:52:12

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Při vhodném uspořádání sešitu lze některé věci řešit pomocí funkce multiple.operations - jeden vzorec, kterému se podsouvají parametry.

Offline

#13 3. 1. 2012 19:15:51

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Měl jsem na mysli pole, ze kterého čteš - například (list1,A1:BZ80). Z toho "obdélníku, nebo čtverce postavím vzorce". Pokud tomu rozumím, tak chceš vrátit jen to co je v určité buňce, nebo se to má nějak vyhodnotit, nebo to chceš opačně - ze sloupce zapsat do tabulky? Prosté načtení hodnot do sloupce je velice jednoduché. Postavím tabulku zdroje a vedle jakousi kopii, která čte relativní odkaz (například =A1). Z této tabulky jednoduše pomocí Shift+F4 udělám absolutní odkazy (například =$A$1). Takto upravené absolutní odkazy seřadíme do sloupce. To se provede doplněním první tabulky a druhá tabulka už jako sloupec je seřazena podle hodnoty - není to víc, nežli 5 minut práce. Posílám rozšířený dotaz : Ukázka volby vzorce

Editoval neutr (3. 1. 2012 21:02:16)


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

#14 4. 1. 2012 09:32:25

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

lp.: diky, bohuzel ve sloupci B ve skutečnosti nemám čísla,ale jiný text, určující, ze kterého sloupce číst data - tím by se vzoreček opět zkomplikoval o vnořené fce IF...což mě vede už k jednodušší variantě a to jen a pouze fce IF s fcemi VLOOKUP a několikrát vnořených do sebe. každopádně diky. - toto by mohlo být řešení pro čtení dat z jedné oblasti (což v mém zjednodušeném případu tak je-obl. K2:M1000 v druhém souboru), ale můj opravdový problém je takový, že těch oblastí mám několik-proto jsem preferoval opravdovou volbu vzorce-každý vzorec může vypadat naprosto jinak.
neutr:
v tvém souboru jsi použil mou první variantu dotazu, když si otevřeš druhou variantu(správnější)(v 8. příspěvku),tak tam bude možná leccos jasnější než z toho souboru co jsi právěpoužil.
každopádně k tvým dotazům v tvém souboru:
z těch 3 tabuleček, které jsi tam nakreslil by odpovídala ta uplně vrchní. Je to zdrojová tabulka, ze které se čtou data a tyto čísla se měly objevit ve žlutém sloupci.
1)zdrojové pole(pole odkud se tahají hodnoty) je ve skutečnosti J2:M100 (neberu-li v úvahu sloupec I - podle kterého se určí řádek, ve kterém se má vyhledávat-sloupec I není výsledkem-výsledkem je nějká hodnota z pole J2:M100). Písmena se v této zdrojové tabulce nepakují. Opakují se jen v tabulce kde má být výsledek(A2:B1000)
2)nejsou proměnné
3)žádné změny, jde jen  o přenesení hodnot z pole o více sloupců, do pole o jednom sloupci - z pole J2:M100 do B2:B1000
4)
5)...joo to by šlo! ano tak toto je nejbližší způsob jak udělat z textu vzorec!! sice pokaždé,když člověk očekává změnu vzorce, tak ho musí aktualizovat...ale aspoň to jde udělat všecko hromadně-roztáhnout vzorec na 1000 řádků-vložit jako text a nahradit "=". Ideální v případech kdy se vzorec nebude často měnit - což je můj případ
6)ono se právě v tom sloupci některá písmena objevují vícekrát(A,B,D) - proto je tam cca 1000 řádku oproti zdrojovému poli, kde je jen cca 100 řádku,které jsou ale unikátní.
-celý muj kompletni priklad je slozitejsi. V tomto zjednodusenem priklade se zdá(tedy opravdu tomu tak je), že se některé řádky opakují...jenže moje opravdova tabulka má více sloupců a ty pak dávají, zdánlivě duplicitním řádkům,  svou jedinečnost.
7)hodnoty se nemění
8)no v mém zjednodušeném případě jsou parametry (v mém druhém souboru-8.příspěvek)čísla v  sloupci B, ve skutečnosti tam je ale text, který říká, který sloupec se má použít jako zdroj čtení dat z pole K2:M100 - což by vedlo k dalším vnořeným fcím IF, aby to fungovalo podle lp.

pánové díky! bod 5) anebo několik vnořených fcí IF s VLOOKUP dosebe tento problém "volby vzorce" řeší-sice ne elegantně,ale řeší!
...škoda že neexistuje ta opačná fce k fci FORMULA - aby udělala z textu vzorec


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#15 4. 1. 2012 12:42:04

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Tak jsem se mrknul na tu novější verzi a už tomu snad lépe rozumím. Je to typická aplikace pro funkci OFFSET. Jen jsem pomocí funkce Match nadefinoval řádek vyhledávací (unikátní) tabulky. Když máte takhle připravenou adresu, tak už s ní můžete dělat všechno možné. Nejen OFFSET, ale je možné to také sloučit do jednoho vzorce ap. Ten případ jsem vložil do sešitu, který je tady :
Ukázka volby vzoce 3


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

#16 4. 1. 2012 13:32:25

dech
Člen
Registrace: 1. 10. 2008
Příspěvků: 150

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

jj, taky pěkné smile diky pánové!


LO 6.1.2.1. (x64)  WIn 8 64bit  16GB RAM

Offline

#17 4. 1. 2012 15:46:15

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

neutr:

Funkce OFFSET je
a) volatilní = vyhodnocuje se při každém přepočtu, při větším počtu vzorců zpomaluje přepočet
b) těžko se zajišťuje kontrola posunu (při větším počtu a rozsahu dat se chyba udělá snadno), takže pokud při kopírování funkce vrátí chybnou hodnotu, tak se to hůře hledá.

Funkce INDEX se vyhodnocuje jen při změnách v odkazované oblast nebo indexech. Při výběru buňky mimo zadnou oblast vrátí chybu. (Funkce OFFSET se zase někdy o trochu znáze adresuje pokud se posun počítá - indexy začínají od 0 a mohou být záporné.)

Offline

#18 4. 1. 2012 18:40:26

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

Pro lp:
Já to vím, už jsem to jednou v nějakém podobném případě četl. Také to píšu v tom sešitě, tedy že na něco takového upozorňuješ. Já jsem se ale zatím s chybou Offsetu nesetkal. Faktem je, že to může zpomalovat, ale to asi mimo makro nemá ani význam. Další záležitostí je to, že zřejmě "dech" naráz celý sloupec nevyhodnocuje, ale postupně po řádku, a může to ukládat jako hodnoty. Nechá si jen jeden aktivní vzorec - třeba ten poslední, a i kdyby dělal naráz třeba 100 řádků, tak to nehraje žádnou úlohu. Pro načítání všech případů bych volil zcela jiný postup - prakticky bez funkcí. Také v sešitě píšu, že po té úpravě (vyjádření řádku vedle sloupce) už se s tím dají krmit všechny možné funkce, nejen Offset. Co se týká chybových funkcí, tak ty by tady neměly mít výskyt, protože zdrojem je řídká tabulka konstantních hodnot. Chyba by vznikla asi jen při kopírování, a to už zase asi není třeba preventivně ošetřovat. Mohla by vzniknout chyba při zadávání - například neexistující znak v unikátním indexu zdrojové tabulky - ale to by bylo spíš k dobru. Já osobně užívám offset poměrně často a s dobrými výsledky uvnitř maker. Fakt je, že tam už většinou rychlost hraje úlohu. Když tedy nejde v prvé řadě o rychlost, tak se offsetu nebráním.

Editoval neutr (4. 1. 2012 18:54:37)


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

#19 5. 1. 2012 15:30:32

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

Re: V buňce 2 vzorce - podle potřeby - VYŘEŠENO

neutr napsal(a)

Pro lp:
Já jsem se ale zatím s chybou Offsetu nesetkal.

To je asi nedorozumění, Nejde o chybu funkce ale programátora. Pokud vybírám data z určité oblasti pomocí funkce offset a počítám koordináty, je poměrně snadné udělat chybu při výpočtu nebo zapomenout ošetřit vstupní data. Funkce offset na takovou chybu upozorní teprve až když se požadují data mimo list. U funkce index se zadá oblast, a každý přístup mimo zadanou oblast generuje chybu.


neutr napsal(a)

Pro lp:
Faktem je, že to může zpomalovat, ale to asi mimo makro nemá ani význam.

Podobné názory jsou dost časté. Viděl jsem listy, (pravda pošpikované několika tisíci vloopup - podoba s popisovaným problémem a jeho předpokládaným řešením je opravdu náhodná), kdy přepočet trval několik hodin. A prý se s tím nedá nic dělat (dalo). Mne otravuje i vteřinové čekání.

neutr napsal(a)

Pro lp:
Já osobně užívám offset poměrně často a s dobrými výsledky uvnitř maker.

Offset jako metoda je něco jiného než offset jako funkce listu. Jako metoda je dost pomalý, při pár voláních to nemusí vadit. V případě funkce se při každém přepočtu vyhodnocují všechny funkce offset v listu.


Celkově mi jde spíše o programovací návyky, tj. nepodceňovat možnost vzniku chyb a rychlost výpočtu. Malý problém lze snadno na pár tahy myši zvětšit. Bohužel, mám pocit, že většina uživatelů zmíněné faktory podceňuje, smiřuje se s pomalou odezvou "rychlého" přímočarého řešení a nehledá cesty ke zrychlení, snad jen "nový stroj" nebo "přeinstalovat".

Offline

Zápatí