MS Excel - načítání dat z jiných listů
Programování mi moc nejde, ale docela to dokáže usnadnit práci.
Potřeboval bych prosím trošičku pomoct
Na jednom listu bych měl 4 tabulky pro tisk
Na dalších listech vytvářené databáze, jde jen o to, že by si člověk v některé z databází vybral řádek, klikl by na tlačítko v listu a některé hodnoty z řádku by se přesunuli do některé z tabulek na listu 1, nevim jestli jedno tlačítko které se bude ptát do které z tabulek, nebo 4 tlačítka? Vůbec nevim jak na to :((
Díky za jakoukoliv snahu mi pomoct...
[mod]Doplněn předmět a změna kategorie (LaKr)[/mod]
Možná by bylo lepší napsat, čeho konkrétně chceš docílit.
mám databázi, každý řádek má několik různých údajů.
chtěl bych si prostě vybrat řádek, kliknout na tlačítko, a několik údajů z vybraného řádku se překopíruje na jiný list, Na tom jiném listu budou 4 tabulky, Je potřeba je všechny naplnit hodnotama z databáze a vytisknout
v databázi bude asi 30 listů, list může mít třeba 150 řádků,
list tisku, budou tam 4 tabulky, protože to budu tisknout na A4, komplikace jsou v tom, že z řádku databáze budu brát 5 údajů z 10, a těch 5 údajů je potřeba poskládat do některé z tabulek na tisklistu, To není tak těžký jak se zdá,
jde jen o to aby tlačítko pochopilo z kterého řádku brát hodnoty, výběr se potom zúží nejspíš sloupci, a potom musí být přesně definované buňky na listu tisku, protože si je nemůže kopírovat kamkoliv,
To přenesení hodnot do jiného listu jde naprogramovat přes makra, docela pohodlně, ale tam je právě chyba, že se zapíše která buňka se má kam skopírovat, ale mě bohatě stačí do toho makra nějak vložit to, aby bral poze hodnoty z ActiveCell a např buňku v sloupci A vybraného řádku přenesl na tisklist do A2, a pokračoval hodnotu z B sloupce přenesl na tisklist do A3, např...
A ten výběr mezi čtyřma možnostma na tisklistu, buť 4 tlačítka, nebo by se to tlačítko muselo nějak ptát...
hehe.. nedelame ciste nahodou ten samej excel? teda ja uz ho mam hotovej .. moc mi pomohl LOS z teto poradny (kdyz tak nad tim premyslim, vymyslel snad vsechny vzorce.. ja to jen daval dohromady) .. taky mam cca 30 listu a excel ma uz 10MB :o) kdyztak se ozvi na 108065574 a zkus mi popsat presne to co potrebujes tady to mas napsane trosku chaoticky ..
ozvat se nemůžu :(
Společnost pro kterou pracuji, mi nedovoluje používat icq :((
takže nějak jinak...noody@seznam.cz
A dovoluje ti společnost, pro kterou pracuješ, používat internet? Pak totiž můžeš použít ICQ2Go.
Jako pres maila fakt resit nic nebudu.. to se ani neda
Nemůžu použít nic co obsahuje icq, stránky s tímhle v názvu mám blokované, tak jedině nějakej chat?
a říká ti něco MS Access?
Pročpak? Pode to tam líp???
no jasně.
Akorát že ases nikdo neovládá, kdybych přišel jak to v tom udělat? tak snad, ale ostatní by s tím neuměli dělat, a zas tak velkou databázi tvořit nebudu, zůstanu u excelu
já ho třeba ovládám
Ty máš v Excelu databáze? Fíííha....
Najprv si rozmysli, ako chceš pridávať tie riadky do listu "tisklist".
Možno Ti stačí napísať do tisklistu len nejaký identifikátor, na základe ktorého sa vyplnia zvyšné stĺpce. Takýto prístup by v podstate nevyžadoval ani použitie makra (stačili by vzorce), otázkou však je, či majú riadky v "databáze" nejaký identifikátor a či by to tak bolo vhodné pre toho, kto bude ten tisklist vypĺňať.
Ak to chceš tak, že v každej databázovej tabuľke bude nejaké tlačidlo pre pridanie záznamu do tisklistu, tak to sa dá napísať ako makro vo VBA. Nechápem presne v čom tu máš problém, pretože princíp fungovania toho makra si napísal...
Ako to spolu súvisí? Jedna tabuľka sa dá vytlačiť aj na viacero strán tak, že hlavička tabuľky bude na každej strane. Alebo máš nejaký iný dôvod, prečo máš štyri tabuľky?
V tisklistu nebudou žádné řádky ani sloupce, hodnoty se budou doplňovat do předem definovaných buněk, tam je potřeba rozhodnout ze 4 možností, To by asi vyřešily 4 tlačítka v liště, to by taky asi šlo udělat, výběr v databázi bude formou activecell.offset(0,sloupec).value/ tohle by mělo vzít hodnotu zadaného sloupce řádku na kterým budu stát/asi...
akorát nevim jak k tomu přidat to kam se to má přenést a jak bych udělal ty 4 tlačítka v liště?
V makre priradíš hodnotu bunke A1 na prvom liste takto:
Tlačidlá by som umiestnil priamo do listu (nie do lišty) - je to jednoduchšie. Dá sa to spraviť cez View / Toolbars / Control Toolbox.
No, tak docela návod by tady byl, ale jak to udělat?
Já o VB nic nevim, a v tom kódu se strácim...Tak jak todle dát do kupy? by mi asi někdo musel vysvětlit každej řádek kódu, mrknu na net a podívám se na nějaký návody, takhle to do kupy nedám, už mi nefunguje ani to co předtím jelo..
Dá sa to robiť úplne jednoducho. Ja som podobný spôsob používal už viackrát a to takto:
Vo formulári pre tlač si určím bunku, v ktrej budem definovať údaje k načítaniu. môže to byť napr. "A1" kde napíšem číslo záznamu v databaze.
Príklad: Názov hárkov v zošite, "Tlač", "db1", "db2" atd... V listoch "db1" aj ďalších databazach si v prvom stlpci očislujem záznamy (1,2,3... ). Na liste "Tlač" potrebujem do buňky "C5"načítať údaje napr. z "db1" a z riadku "58" a zo stlpca "F". Vzorec v buňke "C5" bude vyzerať takto:
=VLOOKUP(Tlač!$A$1;db1!$A$2:$T$200;6)
Ak si do "A1" v liste tlač zapísal číslo 58, tak sa ti podľl uvedeného vzorca do bunky C5 načíta údaj z listu "db1" z riadku označenom číslom položky 58 a zo stlpca č.6, tj. "F"
Obdobne si nadefinuješ vzorce do ostatných buniek. Aby sa ti číslo ktoré zapíšeš do "A1" netlačilo v dokumente, tak si zmeň format písma na bielu farbu, alebo nadefinuj format bunky ;;;.
Ak máš v databáze nejaký identifikátor, tak by som použil taký prístup, ako píše senior. Ak si myslíš, že vhodnejšie je tlačidlo s makrom, tak to spravíš nejako takto:
1. Vytvoríš si tlačidlo:
Cez menu View / Toolbars / Control Toolbox si zobrazíš lištu s prvkami, ktoré sa dajú pridávať. Vyberieš tlačidlo a umiestniš ho do stránky. "Ikona s pravítkom" je teraz stlačená, čo znamená, že si v Design móde.
Ak chceš, môžeš si to tlačidlo nejako inteligentne nazvať (inak to bude CommandButton1) cez pravé tlačidlo myši a Properties.
2. V Design mode dvakrát klikneš na tlačidlo, čím sa otvorí Visual Basic Editor a vytvorí obslužne makro pre udalosť stlačeni tlačidla, do ktorého stačí už len napísať, čo chceš.
3. No a teraz by som Ti napísal, čo potrebuješ, ale keďže neviem nič o štruktúre údajov v zošite, tak len všeobecne:
Najprv si vytvorím pomocné premenné pre niektoré oblasti:
- myTable bude tabuľka databázy, povedzme že je na druhom liste a jej ľavý horný roh je v bunke A3,
- myRegion bude oblasť na prvom liste (tisklist), kde sa budú nachádzať vybrané riadky z databázy,
- myCell si nastavím tak, aby to bol nový riadok na tiskliste, čiže riadok hneď pod myRegion.
Ďalej pokračujem len vtedy, ak používateľ označil (RangeSelection) niečo na liste s databázovou tabuľkou, takže porovnám index worksheetov.
Potom si zistím, čo používateľ na liste s databázovou tabuľkou označil, t.j. prienik mojej tabuľky (myTable) s vybranou oblasťou (RangeSelection).
No a ak niečo vybral, tak prejdem všetky riadky, ktoré sú vo vybranej oblasti a prekopírujem napríklad prvé tri stĺpce na prvý list (tisklist).
Takže to makro by vyzeralo nejako takto:
struktura údajů a jak by to mělo vypadat jsem umístil na tisklist.JPG
Myslím že teprv teď se bude dat napsat kód, kterej pochopím
Jak to bude fungovat je asi jasný, vybrat řádek, kliknout na tlačítko1 a hodnoty z definovaných sloupců se přenesou na tisk list a poskládaj se tam podle dané definice,
pak bych vybral jinej řádek a tlačítko2 a provedlo by se to podobně,
naprosto mi bude stačit makro jediného tlačítka, u dalších se budou měnit pouze buňky tisklistu
Nejsu si jistej, ale to tlačítko by mělo fungovat způsobem:
vzít aktivní řádek, hodnotu ze sloupce A kopírovat na tisklist do A4,
dál ze sloupce B kopírovat na tisklist do C2 atd atd...
Mě se to zdá docela jednoduchý až na to že nevim jak na ten kód
Díky za pomoc
Aha, takže keď stlačí dvakrát jedno tlačidlo, tak hodnoty v určitých bunkách na tisk liste sa majú prepísať hodnotami z vybraného riadka v databáze. V tom prípade je makro úplne jednoduché - bude pozostávať z pár riadkov, ktoré môžu vyzerať nejako takto: