Úvodní stránka · Fórum · Ke stažení · Odkazy · Links (EN, DE, CZ, SK) 7. září 2010, Regína
Menu
Úvodní stránka
Časté dotazy k Excelu
Fórum
Kategorie článků
Databanka kódů
Ke stažení
Svět Excelu v RSS
Odkazy
Kontakt

Excel - funkce na listu
Excel - funkce VBA
Excel - klávesové zkratky
Excel - znaky, klávesnice
Excel - standardní barvy
Excel - slovník menu
Excel - konstanty
Excel - technické údaje
DVD Servis Office
Excel menu 2003 (Ribbon)
Offset Statistic

Chat
Sponzorované odkazy
Přihlášení
Přezdívka

Heslo



Nejste členem?
Zaregistrujte se co nejdříve.

Zapomněli jste heslo?
Nechte si poslat nové.
Kdo je online
Hosté online: 2
Žádný člen není online

Registrovaní členové: 536
Neaktivovaní členové: 48
Nejnovější člen: Libor
Pohotovost Excel
Excel VBA - první pomoc

ICQ status

Skype
Hry online
Sudoku
Sudoku
Sudoku
Sudoku
Excelplus.NET
Excelplus.NET - RSS 0.91 spampoison.com
Google Pagerank - excelplus.netGoogle Pagerank Antispam.er.cz
Statistiky

Čist téma

Excel VBA - Excelplus.NET | Excel | Rovnice a vzorce
Autor Odkaz na buňku v jiném souboru (soubor se mění)
Beat
Člen

Příspěvků: 23
Založen: 16.08.07
Přidán 14.07.2010 10:18
Dobrý den,

poraďte mi prosím vzorec na tuto situaci (rád bych se vyhnul makrům).

Mám soubor Vyhodnocení.xls, kde se vyhodnocují data z externích xls souborů, a soubory LV-06-10.xls a CA-06-10.xls, kde je vždy obsazena buňka A1 v listu List1.

Soubory LV-06-10.xls a CA-06-10.xls jsou umístěny na C:\Excel Soubory\2010\06.

Potřebuji, abych v souboru Vyhodnocení.xls zadával měsíc, rok, a název závodu. Na základě těchto 3 údajů se mi vygeneruje cesta k souboru, ze kterého chci číst (např pro měsíc 06, rok 2010 a název závodu LV je to soubor LV-06-10.xls, který je umístěn na C:\Excel Soubory\2010\06). Jsem schopen si na základě zadaných údajů za pomocí funkce CONCATENATE vygenerovat celou cestu ke správnému souboru i s názvem souboru.

Potřebuji ale, abych na základě této vygenerované cesty, dokázal přečíst buňku A1 v listu List1 v cílovém souboru.

Doufám, že jsem to vysvětlil srozumitelně, snad ještě pomohou obrázky:

Soubor Vyhodnocení.xls:




Soubor LV-06-10.xls umístěný v C:\Excel Soubory\2010\06:




Poraďte mi prosím vzorec do buňky E12 v souboru Vyhodnocení.xls. Děkuji vám za pomoc!


Office 2007
Upravil Beat, 14.07.2010 10:22
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Bath
Člen

Příspěvků: 82
Založen: 04.05.09
Přidán 14.07.2010 14:25
Vytvořit řetězec pomůže funkce ODKAZ
a potom použít NEPŘÍMÝ.ODKAZ, ale
tuším zradu, že to bude omezeno jen
na otevřené sešity nebo v rámci sešitu.
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Beat
Člen

Příspěvků: 23
Založen: 16.08.07
Přidán 19.07.2010 15:36
Ano, NEPŘÍMÝ.ODKAZ - to je ta funkce, kterou jsem hledal. Ale je pravda, že to funguje pouze v případě, když mám zdrojový soubor, ze kterého chci číst data, otevřený.

Máte někdo tip na vzorec, který by fungoval i v případě, když bude zdrojový soubor zavřený?


Office 2007
Upravil Beat, 19.07.2010 15:37
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Premek
Člen

Obrázek uživatele

Příspěvků: 255
Bydliště: Ostrava
Založen: 11.04.07
Přidán 19.07.2010 21:45
Urcite to jde, myslim ze se cesta k souboru uzavre do hranatych zavorek nebo se pred cestu a za ni davaji apostrofy, ale reseni je myslim i zde

http://dataspectrum.cz/dwnl/konsolidace_dat_1.zip
Je to odkaz na sesit, ktery vytvoril pan Jiri Cihar na svych strankach a je volne k dispozici


Nikdy neni tak zle, aby nemohlo byt jeste hur :-)
Office 2007 EN & Office 2003 CZ & Office 2000 EN & Office 2010 EN
303146945 http://www.excelvba.estranky.cz Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Beat
Člen

Příspěvků: 23
Založen: 16.08.07
Přidán 20.07.2010 09:16
Děkuji za odkaz na soubory s příklady. Příklady ale ukazují pouze, jak se odkázat na data z jiného xls souboru. S tímto problém nemám.

Mám problém s tím, že mám vzorec (napsán TEXTOVĚ v buňce) a potřebuji, abych ho rozpohyboval do regulérního vzorce. Toto zprostředkuje funkce NEPŘÍMÝ.ODKAZ. Jenomže ten textový vzorec odkazuje na buňky v jiném xls souboru. A pokud textový vzorec rozpohybuji pomocí funkce NEPŘÍMÝ.ODKAZ, pak vzorec funguje jen tehdy, když mám cílový xls soubor, na který odkazuji, otevřený na liště. Potřebuji, aby to fungovalo, i když bude cílový xls soubor zavřený.

Nicméně velmi děkuji za snahu a zároveň prosím dále o pomoc


Office 2007
Upravil Beat, 20.07.2010 09:17
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Bath
Člen

Příspěvků: 82
Založen: 04.05.09
Přidán 20.07.2010 09:41
Pěkný příklad, díky, přesto mám pochybnost.
Chápu správně, že to jde, ale pouze je-li cesta
ve vzorci napsána napevno, takže generování
cesty k souboru a dosazení do vzorce nelze
dosáhnout a tento požadavek vůbec neřeší ?

Možností pro řešení první ukázky je seznam
s již předem vytvořenými vzorci s cestami,
pak v zadání zobrazení nevytvářet cestu, ale
vlastně odkaz na buňku se vzorcem s cestou,
ale nezdá se mi to moc elegantní, původní
záměr byl lepší a víc se mi líbil.
Jinak bude nutné se smířit s otevíráním sešitů
pro použití funkce nepřímý odkaz....

Opravdu neexistuje jiná možnost?
Přes importovaná data? SQL.REQUEST?
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Beat
Člen

Příspěvků: 23
Založen: 16.08.07
Přidán 20.07.2010 11:09
Bath napsal:
Chápu správně, že to jde, ale pouze je-li cesta
ve vzorci napsána napevno, takže generování
cesty k souboru a dosazení do vzorce nelze
dosáhnout a tento požadavek vůbec neřeší ?

Ano, přesně tak. Pokud mám cestu k souboru ve vzorci napevno, lze z něj číst, i když je soubor zavřený. Pokud ale mám cestu k souboru napsanou textově v nějaké buňce a tuto cestu vložím do vzorce pomocí funkce NEPŘÍMÝ.ODKAZ, pak lze ze souboru číst data pouze tehdy, je-li otevřený.

NEBOLI:

PRVNÍ TYP ZÁPISU:
pokud do některé buňky napíšu
='C:\Název složky\[Data.xls]List1'!A1
Pak jsem schopen přečíst buňku A1 v listu List1 v souboru Data.xls i v případě, že je tento soubor zavřený

DRUHÝ TYP ZÁPISU:
pokud některé do buňky napíšu
=NEPŘÍMÝ.ODKAZ(B2)
kde v buňce B2 je textově zapsaná cesta:
'C:\Název složky\[Data.xls]List1'!A1
Pak jsem schopen přečíst buňku A1 v listu List1 v souboru Data.xls pouze v případě, když je soubor otevřený.

A protože cesta k souboru a název souboru, ze kterého chci číst data je generován na zákaldě zadaných parametrů (je proměnlivý), nemohu použít první typ zápisu, protože je neproměnlivý. Musím nejprve textově vygenerovat celou cestu k souboru (pomocí funkce CONCATENATE) a jeho název a pak musím použít NEPŘÍMÝ.ODKAZ, abych z vygenerované textové cesty udělal vzorec.


Potřebuji pracovat se stovkou externích souborů, proto tedy nemohu každý otevírat. Potřebuji z nich číst, i když jsou zavřené.


Bath napsal:
Možností pro řešení první ukázky je seznam
s již předem vytvořenými vzorci s cestami,
pak v zadání zobrazení nevytvářet cestu, ale
vlastně odkaz na buňku se vzorcem s cestou,
ale nezdá se mi to moc elegantní, původní
záměr byl lepší a víc se mi líbil.

Vašemu návrhu moc nerozimím, popište jej prosím podrobněji.

Bath napsal:
Opravdu neexistuje jiná možnost?
Přes importovaná data? SQL.REQUEST?

Napište mi prosím, jak jste to myslel s tou SQL databází - to už ale asi nebude přes vzorce, že? Nebo SQL.REQUEST je vzorec? Velmi děkuji za odpověď.

Prosím i o další návrhy, jak situaci řešit. Je i jiná možnost, jak udělat z textu vzorec kromě použití funkce NEPŘÍMÝ.ODKAZ?


Office 2007
Upravil Beat, 20.07.2010 11:14
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Bath
Člen

Příspěvků: 82
Založen: 04.05.09
Přidán 20.07.2010 15:43
Nedovedu to srozumitelně popsat,
ale zkusim příkládek, bude-li lepší,
omlouvám se.

Podrobněji k předchozímu návrhu:
Seznam se vzorci G1:G12
Vzorce v jednotlivých buňkách, pevně zadané cesty:
G1: ='C:\Excel Soubory\2010\[LV10-01.xls]List1'!$A$1
G2: ='C:\Excel Soubory\2010\[LV10-02.xls]List1'!$A$1
G3: ='C:\Excel Soubory\2010\[LV10-03.xls]List1'!$A$1
... atd. až po
G12: ='C:\Excel Soubory\2010\[LV10-12.xls]List1'!$A$1
Vzorec pro zobrazení dle zadání:
E12: =POSUN($G$1;$C$5-1;$C$6-2010;1;1)
Převezme hodnotu příslušné buňky dle zadání měsíce,
bude-li ve sloupci H obdobně zadáno pro rok 2011
nebo ve sloupci F pro rok 2009 bude posun i dle roku,
ale nutno si ještě ošetřit vstupní hodnoty a chyby...
Asi to moc nenadchne, nic světoborného... :)

Doplněno 21.7.2010 (10 řádků včetně):
A vlastně ještě sloupečky dle názvu závodu, záleží
kolik jich asi bude, jinak je to pěkný vopruz... :(
V určitých mezích to asi poskládat vzorci půjde. :)
Na můj vkus jsou to kvanta sešitů složitě v adresáři,
raději složka jen pro rok a co list v sešitu to měsíc
s názvy 2010(1) až 2010(12), pak název sešitu jen
LV10.xls nebo CA10.xls, dost možná jen Agenda10
a firmy pořešit jinak. Samozřejmě netuším záměr
a rozsah celého projektu... :) Není to žádná kritika!

Snad to bude k pochopení... ?

Skládání cesty elegantnější, ale zase ta protivenství
s předáním cesty jako vzorec...

...
Ke spekulacím závěrem:
SQL.REQUEST by mělo jít použít i ve vzorci, nemám
s tím zkušenost proto bylo s otazníkem, ani nevím,
zda-li lze použít doplněk, který funkci obsahuje, pro
verzi 2003 či 2007, snad má někdo více zkušeností.
Nápad spočíval ve vytvoření connection pro daný sešit
a pomocí sestaveného dotazu získat data dle měsíce,
roku i závodu přímo do buňky.
Existuje nějaká podobná funkce s použitím ve vzorci?
Vytvořit si vlastní funkci, která by to uměla?
...
Co nějak využít ADO ? Tipy pro inspiraci:
http://technet.microsoft.com/en-us/library/ee692882.aspx
http://support.microsoft.com/kb/257819
Upravil Bath, 21.07.2010 08:02
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Premek
Člen

Obrázek uživatele

Příspěvků: 255
Bydliště: Ostrava
Založen: 11.04.07
Přidán 21.07.2010 16:49
Tak sem ted hledal jeste na netu a nenasel sem nic rozumneho. Funkce Neprimy.odkaz opravdu nepracuje s zavrenymy sesity jak jste psali, je to napsane i v napovede.
Zkusil sem obratit pozornost na XLM funkce (Excel4) kde jsou nejake moznosti, ale nedokazl sem rozchodit vzorce
GET.WORKBOOK a GET.CELL, ktere by mozna, ale opravdu jen mozna pomohly.

Takze ja nevim, co si udelat doplnek, ktery by obsahoval trosku VBA kodu a ten by zajistoval pozadovanou funkcnost?


Nikdy neni tak zle, aby nemohlo byt jeste hur :-)
Office 2007 EN & Office 2003 CZ & Office 2000 EN & Office 2010 EN
303146945 http://www.excelvba.estranky.cz Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Beat
Člen

Příspěvků: 23
Založen: 16.08.07
Přidán 26.07.2010 10:36
PRO BATHA:

K PRVNÍ ČÁSTI TVÉHO PŘÍSPĚVKU:
Ano, to by teoreticky pomohlo, ale pouze v případě, že budu ze zdrojového souboru číst pouze buňku A1. Ve skutečnosti poutřebuji vyčíst celou tabulku ze zdrojového souboru (nejen buňku A1). Ale to bych sem nechtěl plést, aby to neudělalo můj příklad zbytečně složitý.

KE DRUHÉ ČÁSTI TVÉHO PŘÍSPĚVKU:
Funkci SQL.REQUEST vůbec neznám, ani ji nemám mezi vzorci ve verzi Office 2003 k dispozici. Pokusím se o této funkci zjistit nějaké informace

PRO PREMKA:

Díky za tipy a za tvůj čas strávený při hledání. Zkusím zjistit nějaké informace o tebou zmiňovaných vzorcích. Do VBA bych se nerad pouštěl, protože s tím nemám žádnou zkušenst. Bohužel časové možnosti ve firmě mi nedovolí učit se základy VBA v Excelu, abych pak byl schopen něco naprogramovat. Ani netuším, jaký level by bylo naprogramovat doplňek, který by zajišťoval čtení buněk z externích zavřených xls souborů. Proto bych se rád VBA vyhnul.


Office 2007
Upravil Beat, 26.07.2010 10:39
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Bath
Člen

Příspěvků: 82
Založen: 04.05.09
Přidán 27.07.2010 19:12
"Proto bych se rád VBA vyhnul."
V tomto případě příspěvek již bez přínosu. :(

...
"trosku VBA kodu"
Zkoušeno předat cestu Application.Evaluate
jako pokus o vlastní vba funkci, ale výsledkem
opět stejná funkce (nepřímý odkaz), převede
na objekt jen je-li otevřený. :(
Vypadalo to tak nadějně, ale nedaří se rozchodit
při zavřeném sešitu. :)

...
"Ve skutečnosti potřebuji vyčíst celou tabulku ze zdrojového souboru"
Teoretický příklad nevyhověl celkovému objemu... :( Marná snaha. :(
Viz tip na: ADO
Byla by to předem určená nebo pojmenovaná oblast? Celé listy?
Pojmenované záhlaví slopuců? (později jako Fields)
Stejná struktura tabulek v jednotlivých sešitech?
Závislé od struktury tabulek v sešitech, ale realizovatelné, příp.
využít i sestavení dotazu dle závodu aj. nebo vytahat data sešitu
do jednoho sešitu a dotáhnout vzorci. Co myslíte? Zkusit příklad?

...
Tento příklad lze nalézt ve vba nápovědě:

The GET.CELL(42) macro function returns the horizontal distance from the left edge of the active window to the left edge of the active cell. This macro function has no direct Visual Basic equivalent.

Kód VBA
  1. Worksheets("Sheet1").Activate
  2. Range("C3").Select
  3. MsgBox ExecuteExcel4Macro("GET.CELL(42)")
  4.  


Dotaz ke zmíněným GET.WORKBOOK a GET.CELL...
Nezdá se mi, že to bude ve vzorcích podporováno,
ale nešlo by to protlačit přes ExecuteExcel4Macro
a schovat do vlastní vba funkce?
Kde nalézt nějaké detaily a pěkné info pro využití
pro verzi 2003 či 2007?
(Reference Excel 4 (XLM) maker, čísla funkcí, získat
vlastnosti buňky, font, barva apod.)

...
Případné další info vítáno.
Poslat soukromou zprávu
Autor RE: Odkaz na buňku v jiném souboru (soubor se mění)
Bath
Člen

Příspěvků: 82
Založen: 04.05.09
Přidán 06.08.2010 10:14
Obdobné diskuse k tématu:
INDIRECT and closed workbooks
http://www.dailydoseofexcel.com/archives/2004/12/01/indirect-and-closed-workbooks/

...
INDIRECT.EXT nezkoušeno, nutnost
instalace doplňku autora funkce
...
SQL.REQUEST prý nebude více podporováno
(asi bude v nějakém starším MS doplňku)
...
PULL splní požadavek, funguje

Using Harlan Grove’s PULL function:
The function creates separate Excel application instances to “pull” data from closed workbooks
Funkction PULL (vba code):
http://groups.google.com/group/microsoft.public.excel.worksheet.functions/msg/e249f6c074a3adfd

...
GETVALUE ve VBA funguje bez problémů, ale
pokud změním na public funkci, tak se nedaří
zatím rozchodit pro použití pro vzorce v listu.
Dejte případně vědět, kdyby to někdo přemohl!
Omezení pro XLM funkce?
Lze použít pouze v listech excel4macro,
v definovaných názvech nebo volat z vba?

A VBA Function To Get A Value From A Closed File
http://spreadsheetpage.com/index.php/tip/a_vba_function_to_get_a_value_from_a_closed_file/

...
Hezký den všem!
Upravil Bath, 06.08.2010 10:21
Poslat soukromou zprávu
Přejít na:
... nejlépe se zpracovávají tabulky mléčné čokolády