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

#1 27. 4. 2011 15:17:20

elc
Člen
Registrace: 27. 4. 2011
Příspěvků: 9

Dynamický vzorec

Prajem dobrý deň!
Mám problém, s ktorým zatiaľ neviem pohnúť a to, že vo vzorci dynamicky potrebujem meniť názov mesiaca podľa aktuálneho dátumu. Napr.:=VLOOKUP(C6;'file:///C:/Moje/Dochádzka/Dochádzka_11.ods'#$Apríl.$C4:$AJ39;34;0). V tomto vzorci namiesto "April" potrebujem zadať hodnotu bunky, povedzme O1, kde bude pripravené meno mesiaca podľa aktuálneho dátumu, čiže tento mesiac tam bude text "April". Bez úvodzoviek.
Za pomoc ďakujem.

Offline

#2 27. 4. 2011 22:30:04

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

Re: Dynamický vzorec

Použijte např. INDIRECT pro sestavení odkazu a např. kombinaci NOW a CHOOSE pro zjištění názvu aktuálního měsíce, tj.
=VLOOKUP(C6;INDIRECT("C:/Moje/Dochádzka/Dochádzka_11.ods!"&CHOOSE(MONTH(NOW());"January";"February";"March";"April";"May")&".C4:AJ39");34;0)

- tou notací INDIRECT pro windows cesty si nejsem 100% jistý, nemůžu to teď na Linuxu ověřit
- je nutné dopsat další měsíce do CHOOSE, nebo zvolit jiný způsob (např. před VLOOKUP v pomocné tabulce)
- nevýhodou je nemožnost snadného kopírování v případě INDIRECT - vzorce se nepřizpůsobují

Editoval hanus (27. 4. 2011 22:31:28)

Offline

#3 28. 4. 2011 04:59:00

elc
Člen
Registrace: 27. 4. 2011
Příspěvků: 9

Re: Dynamický vzorec

Vážený pán Hanus,
ďakujem za radu, skúsim. Myslím, že asi to nebude ono. Totiž meno mesiaca už mám pripravené v jednej pevnej bunke, ako som písal vyššie, povedzme, že to bude v bunke O1. Ja sa totiž dynamicky chcem odvolať na dáta v inej tabuľke (Dochádzka _11), kde mám dochádzku zamestnancov rozdelenú na jednotlivé listy podľa mesiacov. Staticky mi tento vzorec funguje. Ja potrebujem, aby v tomto vzorci namiesto slovíčka "Apríl" (v češtine je to duben) sa OO pozrel do vybranej bunky a dosadil do vzorca text, ktorý je pripravený v danej bunke. Meno mesiaca zistím z aktuálneho dátumu (to už mám urobené).
Prajem príjemný deň.

Offline

#4 28. 4. 2011 08:08:49

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

Re: Dynamický vzorec

=VLOOKUP(C6;CONCATENATE("'file:///C:/Moje/Dochádzka/Dochádzka_11.ods'#$";O1;".$C4:$AJ39");34;0)

zkuste je to nevyzkoušený nápad

Editoval sedlacekdan (28. 4. 2011 08:09:14)


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

#5 28. 4. 2011 13:59:21

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

Re: Dynamický vzorec

Jak psal už Hanus (jen místo C4 použil rovnou vzorec):

=VLOOKUP(C6;INDIRECT("'C:/Moje/Dochádzka/Dochádzka_11.ods'#"&C4&".C4:AJ39");34;0)

ps.: místo CHOOSE bych ve vzorci určitě použil:

=TEXT(EOMONTH(TODAY();1);"mmmm")

ps2.: Pokud chci indirect kopírovat s přizpůsobením odkazů, použiji r1c1 notaci odkazů (tady to zřejmě není nutné).

Offline

#6 28. 4. 2011 14:15:27

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

Re: Dynamický vzorec

to lp.: Formátování čísla jako názvu měsíce pomocí TEXT je bezva finta/usnadnění. Proč jste použil EOMONTH(TODAY();1) ? vrátí to název příštího měsíce; proč ne prostě
=TEXT(NOW();"mmmm")

Editoval hanus (28. 4. 2011 14:15:46)

Offline

#7 28. 4. 2011 14:34:44

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

Re: Dynamický vzorec

hanus napsal(a)

to lp.: Formátování čísla jako názvu měsíce pomocí TEXT je bezva finta/usnadnění. Proč jste použil EOMONTH(TODAY();1) ? vrátí to název příštího měsíce; proč ne prostě
=TEXT(NOW();"mmmm")

1) Špatně jsem si přečetl dotaz a vypsal jsem následující měsíc, jinak samozřejmě stačí uvedené.

2) Občas tento postup používám - např. EOMONTH(TODAY();0)+1 dá přímo datum 1. dne následujícího měsíce.

Offline

#8 5. 5. 2011 07:17:06

elc
Člen
Registrace: 27. 4. 2011
Příspěvků: 9

Re: Dynamický vzorec

Vážení páni,
zatiaľ mi ani jeden spôsob nefunguje. Skúšal som postup podľa p. Sedláčka, OO vyhodí chybu 508. Vo vzorci podľa p. "lp" mi OO vyhodí chybu 502. Názov aktuálneho mesiaca už mám pripravený v jednej bunke, vo vzorci od p. "lp" je to C4. Ale teraz ma napadlo, či ten názov mesiaca sa neodkazuje na zošit Dochádzka_11. Nebude problém v tom, že ja názov mesiaca mám pripravený v inom zošite, z ktorého sa cez tento vzorec odkazujem na zošit Dochádzka_11?
Za pomoc veĺmi pekne ďakujem.

Editoval elc (5. 5. 2011 07:17:38)

Offline

#9 5. 5. 2011 10:36:51

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

Re: Dynamický vzorec

Hledání překlepů a chyb podle zpráv "nefunguje to" je loterie.

502 znamená neplatný argument.
V buňce C4 musí být text,

co vrátí výraz

=istext(C4)

a co vrátí výraz:

="'C:/Moje/Dochádzka/Dochádzka_11.ods'#"&C4&".C4:AJ39"

Je to požadovaná adresa?

Varianta p. Sedláčka fungovat nebude, VLOOKUP potřebuje odkaz a ne textový řetězec (ten se konvertuje na odkaz funkcí INDIRECT).

Offline

#10 5. 5. 2011 12:47:15

elc
Člen
Registrace: 27. 4. 2011
Příspěvků: 9

Re: Dynamický vzorec

Prajem dobrý deň.
v bunke, kde mám pripravené meno mesiaca je text, funkcia =istext(C4) vráti hodnotu true (pravda). Ja potrebujem tento text dosadiť do výrazu ="'C:/Moje/Dochádzka/Dochádzka_11.ods'#"&C4&".C4:AJ39" za "&C4&" text, ktorý je v bunke C4. Celý tento výraz určuje pole hodnôt, ktoré prehľadáva funkcia Vlookup, ale v inom, druhom zošite. Každý mesiac bude hľadať hodnoty ale v inom liste, ktoré sú pomenované podľa jednotlivých mesiacov v roku. Začiatok a koniec tabuľky, kde má funkcia Lookup hľadať, je vždy na každom liste rovnaký, Ja potrebujem len dosadiť text, ktorý sa mení podľa aktuálneho mesiaca.
Za pomoc Vám veľmi pekne ďakujem.
Aby Vás to nemýlilo, trocho to upravím:" C:/Moje/Dochádzka/Dochádzka_11.ods'#"&B2&".C4:AJ39 ". V zošite, v ktorom volám túto funkciu v bunke B2 je pripravený názov mesiaca ako text a celé toto sa odkazuje na iný zošit a konkrétny list a tabuľku v ňom. Ak to takto zadám, OO hlási chybu 511. Ja potrebujem sa dynamicky odkazovať na rôzne listy v tom istom zošite, podľa aktuálneho mesiaca.

Editoval elc (5. 5. 2011 13:09:36)

Offline

#11 5. 5. 2011 13:09:41

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

Re: Dynamický vzorec

Zkuste připsat pár dalších informací, hlavně verzi calcu.

Ve verzi 3.3 vlookup v jiném sešitu hledá.

Pro otestování správnosti vytvořeného odkazu zkuste použít jinou funkci, třeba:

=COUNT(INDIRECT("'C:/Moje/Dochádzka/Dochádzka_11.ods'#"&C4&".C4:AJ39"))

Offline

#12 5. 5. 2011 15:38:42

elc
Člen
Registrace: 27. 4. 2011
Příspěvků: 9

Re: Dynamický vzorec

Zdravím,
verzia OO 3.2.1, build 9505.
Ak mám statický vzorec, napr. ako =VLOOKUP(C6;'file:///C:/Moje/Dochádzka/Dochádzka_11.ods'#$Apríl.$C4:$AJ39;34;0), tento funguje bez problémov. Apríl = Duben. Posledná funkcia (COUNT....) mi vracia 0. Nie je mi celkom jasné, čo robí funkcia INDIRECT, akosi z helpu som to neporozumel.
Akonáhle miesto $Apríl chcem dať odkaz na bunku v aktuálnom zošite, a funkciu, ktorá mi prepíše slovíčko Apríl menom aktuálneho mesiaca, ktoré mám prípravené napr. v bunke B2, už mi to nefunguje.

Offline

#13 5. 5. 2011 17:17:03

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

Re: Dynamický vzorec

Funkce INDIRECT převádí text na odkaz. Umožňuje tak složit potřebný odkaz pomocí vzorce.

Pro kontrolu, pokud

=VLOOKUP(C6;'file:///C:/Moje/Dochádzka/Dochádzka_11.ods'#$Apríl.$C4:$AJ39;34;0)

funguje, mělo by fungovat

=VLOOKUP(C6;INDIRECT("'file:///C:/Moje/Dochádzka/Dochádzka_11.ods'#$Apríl.$C4:$AJ39");34;0)

Jestli to nefunguje, nainstalujte si vyšší verzi.

Pokud toto funguje, je zřejmě chyba v obsahu buněk.
Zkontrolujte si obsah buňky s aprílem, včetně neviditelných znaků před i za řetězcem a zkontrolujte si ve vzorci všechny uvozovky - jednoduché i dvojité. Výraz 

="'C:/Moje/Dochádzka/Dochádzka_11.ods'#"&C4&".C4:AJ39"

se musí rovnat

'file:///C:/Moje/Dochádzka/Dochádzka_11.ods'#$Apríl.$C4:$AJ39

Pokud, samozřejmě je v buňce C4: "$Apríl"

Offline

#14 6. 5. 2011 08:37:49

elc
Člen
Registrace: 27. 4. 2011
Příspěvků: 9

Re: Dynamický vzorec

Vážený pane,
nainštaloval som OO 3.3 a po zadaní dynamického vzorca hlási chybu 511 - chýba mu premenná. V bunke, kde je pripravený text, je aj znak "$". Žiadne neviditeľné znaky tam nie sú. Statický vzorec funguje bez problémov.
Priznám sa, že neviem, kde by mohla byť chyba.
Druhá fukcia s INDIRECT nehlási žiadnu chybu, ale vracia mi prázdnu bunku.
Vinšujem Vám príjemný víkend.

Editoval elc (6. 5. 2011 08:38:20)

Offline

Zápatí