Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
próbáltam a bemásolt fájlt is másolni illetve megtaláltam a forrásadat mentése menüpontot is de az ki volt pipálva szóval nem tudom előző kiadású officcal ment ez simán vissza kell raknom mert ez így nem jó...
Vannak-e makrók a kimutatásodhoz kapcsolódóan? Mert az xls -be belemásolja, de az xlsx-be nem. Próbáld xlsm - (makróbarát excel) kiterjesztéssel másolni.
Ötlet: Előbb zárd be a másolt fájlt és csak utána az eredetit.
Ha nincs benne makró, akkor nézd meg az adatok - hivatkozások vagy kapcsolatok (leginkább mindkettő) menüpontban, mit mutat és módosíthatod, ha szükséges.
Még egy ötlet: másold át a bezárt fájlt és úgy nézd meg, mi az eredmény.
tovább pontosítom a leírást : nem csak a kimutatást másolom hanem az egész excel fájlt, ha elmentem xls-nek xlsx helyett akkor jó, tudom másolni pendriveon/emailben akár hogy és a hivatkozás is jó
Viszont így pár funkció ami szükséges nem működik ezért akarom xlsx-nek hagyni
Ha csak a kimutatást másolod, akkor a hivatkozásokat "magával viszi", ezért kiabál. Az elküldés előtt - ha a forrást nem küldöd vele - akkor meg kell szüntetni a forráshivatkozást, a másik verzió, hogy a forrást is küldöd vele.
Egy tipp a hivatkozás megszüntetésére:
A kimutatást tartalmazó munkalapot átmásolod egy új munkafüzetbe. Ebben a munkafüzetben megkeresed a hivatkozások, külső hivatkozásokat és rákattintasz a megszüntetésre.
Ekkor az összes adat fix számmá alakul át, a kimutatás éppen akkori állapota szerint.
(Persze ezt lehet, hogy nem akarod, akkor marad a forrással küldés verzió.)
Mintha lenne olyan opció is valahol a kimutatás tulajdonságainál, hogy forrással együtt mentés - próbáld ezt megtalálni és az átmásolt munkafüzetben beállítani. Elvileg akkor is "elmúlnak" a külső hivatkozások.
a következő problémával kapcsolatban kérnék segítséget:
van egy adathalmazom amiből csináltam egy kimutatást (2013-as excel) , a gond pedig az, hogy ha másolom vagy emailben küldöm akkor kiabál az excel , hogy nem találja a külső adatforrást, mert az elérési útvonal nem a kijelölt adathalmazra hivatkozik hanem az eredetileg létrehozott excelre. Lehet nem túl érthető leírom egy példával:
eredeti excelben így néz ki a kimutatás forrása:munka!$AE$3:$AI$24
a másoltban pedig így : Users**** laptopDesktop[proba.xlsx]munka1'!$AE$3:$AI$24
azt szeretném elérni hogy a másolással ne hivatkozza meg nekem az eredeti fájl helyét hanem maradjon meg úgy mint az eredetiben volt
keresgéltem a súgóban meg a neten pár helyen de nem igazán találtam rá a megoldásra
Szerintem nyugodtan feltehetsz itt Access kérdéseket is. Word-öt és Powerpointot is programoztunk már, mi gond lehetne belőle? Cooper kartács biztos nem fog kitiltatni érte. Ha pedig megy az angol, akkor meg határtalanok a lehetőségeid, mert rengeteg angol nyelvű fórum van, jobbnál jobb szakértőkkel.
Nyilván nem ugyanaz egy táblázatkezelő és egy adatbázis kezelő működési alapelve.
Az excelben sok-sok képletezési lehetőség van, ami egy adatbázis kezelőben "természetesen" hiányzik.
Cserébe az access rengeteg adatot tud kezelni gyorsan, jelentések, kimutatások lényegesen gyorsabban jönnek belőle, mint excelből és a korlátozás is kevesebb. Viszont nem árt érteni az adatbázis logikához (kapcsolatok, kulcsok, stb.).
Tehát feladata válogatja, hogy melyiket célszerűbb használni. Nekem volt szerencsém mindkettővel dolgozni, mindkettő elég barátian viselkedett. (Volt olyan, amit excelben kezdtem el, de "kinőtte magát", ezért access lett belőle.)
Off: "Lehet, egy adatbázis kezelő (akár acces) sokkal jobb lenne."
Ez nagyon sok feladatra igaz lenne, de....
Amikor intenzíven dolgoztam egy személyi nyilvántartó programon, többen felvetették, hogy miért nem access-ben írom. Akkor azt feleltem, hogy azért, mert az Excelt ismerem, az Accesst nem, így nem tudom, mekkora munka lenne áttérni, és abban oldani meg a feladatot.
Ma már áldom a szerencsémet, hogy az Excelnél maradtam.
1. Az Accesshez nem találtam tisztességes szakirodalmat.
2. Van ugyan néhány Access fórum itt az indexen: "MS Access - Segíccség kéne, de gyorsa" és az "Access programozas" című és talán egy harmadik is, amelyekben havonta, néha félévente ír valaki. Ezek többsége is kérdés, vagy - mint az én esetemben - egy egészen oda nem illő válasz.
Szóval megfelelő háttér nélkül egy kezdőnek, illetve autodidaktának sajnos nem nagyon lehet komolyabb feladatokat Access-ben felvállalnia.
Azt nem tudom, hogy létezik-e más adatbáziskezelő, ahol az ember megfelelő háttérrel tud programot írni.
Excel2010-ben már működik a Hahiba(hosszúképlet,"") függvény is.
Elsőre nekem is ez jutott eszembe, ha már megvan az új fájl, akkor frissíti, de azt még nem néztem meg, mi van akkor, ha a frissítéskor sincs meg.
Amúgy szerintem rá kellene bízni a makróra az összesítések bekérését, én nem feltétlenül képletben képzeltem ezt el, lehet, hogy elég értékben betenni.
De még gondolkodom rajta és valószínűleg levelezni is fogok papamacival - téged is beteszlek cc-be.
Megjött, megnéztem. Első pillantásra elég komplikáltnak tűnik, hogy honnan hová kerülnek az adatok. Van erre valami szabályszerűség? Ma biztos, hogy nem fogok elmerülni benne, talán hétvégén. (Ha közben Fferi küld egy megoldást, szólj légyszi, hogy már nem aktuális). Két kérdés/gondolat:
1) Mennyire fix ezeknek a fájloknak a szerkezete? Lehet módosítani rajta, ha úgy gondolom, hogy más szerkezettel könnyebb lenne a feladatot leprogramozni?
2) Alternatívaként próbáld ki azt, hogy =HA(HIBÁS(hosszúképlet);"";hosszúképlet) Ez megszünteti a #HIV! hibaüzeneteket, és a helyükön üres sztringeket hoz létre. Az üres sztring nem okoz problémát az összegzéseknél, szóval a táblád használható lesz annak ellenére, hogy pl. a forrásfájlok többsége nem létezik. Azt gondolom (mármint nem vagyok biztos benne, ki kell próbálni), hogy ha a hiányzó fájlok elkészülnek, akkor a külső hivatkozások frissítésével az új adatok át fognak jönni. Pl. az összegző táblázat következő megnyitásakor.
Tehát kb. 70 dolgozó, kéthetente 1 file, 36 héten keresztül, azaz idestova 1260 file. Egy file-ba csak egy dolgozó adatai kerülnek, amit ő készít el.
Közös használatú lesz az a munkafüzet, amit a dolgozók töltögetnek, mert egy közös meghajtóról érhető el, és így egyszerre többen is tudnak benne dolgozni. A mentés és a file nevének generálása automatikus.
Hiába teszem be az összesítőt, akkor is olyanra hivatkoznék, ami még nem létezik és ugyanaz lenne a hibajelenség, mintha külön összesítőt készítenék.
Elküldöm e-mailben (ha nem gond) és akkor egyértelműbb lehet az egész.
Tutibiztos, hogy ezt csak excelben kell megoldani. Arról nem tudunk semmit, hogy hány dolgozóról van szó, milyen időtávokra vonatkoznak az egyes fájlok és hány dolgozó ír egy-egy fájlba. Lehet, egy adatbázis kezelő (akár acces) sokkal jobb lenne.
Ha már excel, miért nem gondolkodsz közös használatú fájlban. Abba egyből beleteheted az összesítő munkalapot is akár.
Csatlakozva az előttem szólókhoz, szerintem érdemes lenne egy kicsit pontosabban leírni a feladatot (nem a "hadititkokra" gondolok, csak az alap körülményekre).
"Hát, ez az a kérdés, amire ennyi információból senki nem fog tudni jól válaszolni. Az ilyen rendszereket alaposan át kell gondolni és megtervezni. Mi az egésznek a célja? Milyen legyen a forrásfájlok és az összesítő táblázat szerkezete, hogy a legjobban segítse a programlogikát? Milyen rendszerben kell a lekérdezés? Kell-e felhasználói felület, ahol válogatni/szűrni lehet az adatok, fájlok, stb. között? Ha kell, milyen funkciókat tudjon? Mik a hibalehetőségek, és ezeket milyen mélységben, hogyan vizsgálja/kezelje a program?"
A cél: a dolgozók által elkészített (jellemzően szám)adatokat tartalmazó táblázatból egy összesítő táblázatba beültetni az adatokat. A forrásfileban 87 adat van oszlopokba rendezve, és azt kellene a gyűjtőbe sorokba rendezni. Semmilyen szűrésre nincs szükség, csak egyszerű adatátültetésre. De amíg nincs meg a forrásfile, addig a tábla elkészítésénél folyamatosan hibát kapok, ha képlettel hivatkozok. Első körben igen, úgy gondoltad, hogy képletekkel működne a gyűjtő munkalap, azonban ezeket a képleteket makró írja be, de csak akkor, ha elkészült a forrásfájl.
"Ezért gondoltam a makrós megoldásra, amiben olyan feltételt kell szabni, hogy csak akkor töltődjenek ki az összegyűjtő táblázat cellái, ha a dolgozó létrehozta azt a file-t, amire hivatkozik az összegyűjtő file bizonyos cellája."
Itt egy kis zavart érzek az Erőben.
Ami "hivatkozik", az képlet. Úgy gondoltad, hogy mégiscsak képletekkel működne a gyűjtő munkalap, azonban ezeket a képleteket makró írja be, de csak akkor, ha elkészült a forrásfájl? Tulajdonképpen megvalósítható...
"A kérdés, hogy milyet és hogyan?"
Hát, ez az a kérdés, amire ennyi információból senki nem fog tudni jól válaszolni. Az ilyen rendszereket alaposan át kell gondolni és megtervezni. Mi az egésznek a célja? Milyen legyen a forrásfájlok és az összesítő táblázat szerkezete, hogy a legjobban segítse a programlogikát? Milyen rendszerben kell a lekérdezés? Kell-e felhasználói felület, ahol válogatni/szűrni lehet az adatok, fájlok, stb. között? Ha kell, milyen funkciókat tudjon? Mik a hibalehetőségek, és ezeket milyen mélységben, hogyan vizsgálja/kezelje a program?
Ha ezek mind ki vannak találva, és fejben megvan, hogy mit, honnan, hová kellene pakolni, akkor lehet konkrét makrókód megírásába kezdeni.
"...azért nem működik a tökéletes képlet, mert a dolgozó véletlenül beletett egy plusz szóközt a fájlnévbe, kötőjel helyett alulvonást írt, nem a Munka1-ra, hanem a Munka2-re dolgozott, stb..." - A dolgozók által elkészített file-ok neveivel nem lesz gond, mert az automatikusan képződik a beforesaveas és a beforeclose segítségével.
"Egy makróval meg bármikor le lehet kérdezni a dolgozói fájlokat, ki lehet benne térni hibalehetőségekre, többször is megismételhető a lekérdezés, ha valami miatt elsőre nem sikerül. Szóval én ezt biztosan makróval oldanám meg." - Hát erre gondolok én is, de nem tudom hogy milyen makrót és hogyan használjam.
"Talán létre kell hozni előre kamu dolgozói fájlokat, hogy a külső képlethivatkozások rendben legyenek, megcsinálni a képleteket úgy, hogy ha nincs érték a forrásfájlokban, akkor a képletek üres sztringet eredményezzenek..." - na de 70 dolgozó 10-10 fileját hozzam előre létre?, az akárhogyan is számolom 700 file; na ezen tépném a nem létező hajamat.
Ezért gondoltam a makrós megoldásra, amiben olyan feltételt kell szabni, hogy csak akkor töltődjenek ki az összegyűjtő táblázat cellái, ha a dolgozó létrehozta azt a file-t, amire hivatkozik az összegyűjtő file bizonyos cellája. A kérdés, hogy milyet és hogyan?
Képletezéssel nem nagyon lehet megoldani, hogy ne legyen a cellában semmi, csak ha már a dolgozó létrehozta az xy forrásfájlt. Max azt lehetne megoldani, hogy a beképletezett cellák tartalma semminek látszódjék. De szerintem a 3500 képlet nagy szívás lenne hosszú távon. Lelki szemeim előtt megjelenik egy haját tépő papamaci, aki három órás kutatás után jön rá, hogy azért nem működik a tökéletes képlet, mert a dolgozó véletlenül beletett egy plusz szóközt a fájlnévbe, kötőjel helyett alulvonást írt, nem a Munka1-ra, hanem a Munka2-re dolgozott, stb...
Ráadásul ha valamit véletlenül elrontasz és elmented, az úgy marad.
Egy makróval meg bármikor le lehet kérdezni a dolgozói fájlokat, ki lehet benne térni hibalehetőségekre, többször is megismételhető a lekérdezés, ha valami miatt elsőre nem sikerül. Szóval én ezt biztosan makróval oldanám meg.
Ezzel együtt nem kizárt, hogy képlettel is lehet... Talán létre kell hozni előre kamu dolgozói fájlokat, hogy a külső képlethivatkozások rendben legyenek, megcsinálni a képleteket úgy, hogy ha nincs érték a forrásfájlokban, akkor a képletek üres sztringet eredményezzenek, aztán törölni a kamu fájlokat, és imára kulcsolt kézzel remélni, hogy a dolgozók hibátlanul végezzék el az adatfeltöltést minden hónapban.
Hogyan tudom megoldani excel 2010-ben az alábbi problémát?
Az alaphelyzet a következő: A dolgozók minden hónapban készítenek egy adattáblát. Az elkészült táblákból én össze kívánom gyűjteni az adatokat egy közös táblába. Azonban a közös összegyűjtő táblát már most meg szeretném csinálni előre 10 hónapra, hogy később ne kelljen vele havonta szórakoznom.
Most ha behivatkozom az összegyűjtő tábla celláiba a forrásfile celláit, akkor rögtön kéri a forrásfile elérési útját, ami azonban még nincs, hiszen ezután fogják csinálni a dolgozók. Ha nyomok egy „Mégse” gombot, akkor egy cellában átíródik a nem létező forrásfile neve (és lesz benne egy „#HIV” felirat, de ezt kb. 3500-szor kellene megcsinálnom, ami kicsit unalmas. Ezt szeretném kiküszöbölni.
Olyan feltételt szeretnék szabni az összegyűjtő táblázat összes hivatkozással ellátott cellájának kitöltéséhez, hogy csak azután írjon bele bármit is (na jó, a kért és hivatkozott adatot), miután a dolgozó létrehozta a hivatkozott forrásfilet.
A másik megoldandó probléma szintén ehhez kapcsolódik. Azt is meg kell valahogyan oldani, hogy ne egyesével kérdezgesse a frissítéseket, hanem egyszerre és automatikusan végezze azokat el, amikor megnyitom az összegyűjtő táblázatot.
Segítségeteket előre is köszönöm.
Ui.: az előző problémát sikerült megoldanom, köszönet érte a hozzászólóknak.
Private Sub CommandButton1_Click() Dim mesternev As String, masolatnev As String, sor As Integer mesternev = Cells(1, 1).Value sor = 2 Do While Not IsEmpty(Cells(sor, 1))
if range("T1").value<> range("S1").value then
if dir(cells(sor,2).value & cells(sor,3).value,vbdirectory)="" then
mkdir cells(sor,2).value & cells(sor,3).value
endif
endif FileCopy Source:=mesternev, Destination:=Cells(sor, 1).Value sor = sor + 1 Loop range("S1").value=range("T1").value End Sub
Próbálkoztam de nem jött össze, valszeg az általam elgondolt metódushoz nem passzol a folyamat.
Belenyúlni pedig nem tudok/merek :)
Mellékelek egy képet.
Az A1 cellában a mesterfájl útja. A C2 cellában írom át a kívánt mappanevet,(lefele beírja mindenkiét mert ez azonos) . B oszlopban a szerver(ek) neve, (ami mindenhol különbőző :) ) E ben pedig a nevek, (azért így csináltam mert időnként változik). Ezeket összefűzi az A oszlopba, és a gombra kattintva megy a másolás.
Bemásoltam a T, és S cellákba amit írtál , és minden sorba a kódokat :), de nem műxik.
Most visszaállítottam mindent az eredetire, így működik, de csak akkor, ha előzőleg létrehozom a mappát.
Megkérlek szépen, ránéznél erre is, hátha van megoldás ? Köszönöm !!
Private Sub CommandButton1_Click() Dim mesternev As String, masolatnev As String, sor As Integer mesternev = Cells(1, 1).Value sor = 2 Do While Not IsEmpty(Cells(sor, 1)) FileCopy Source:=mesternev, Destination:=Cells(sor, 1).Value sor = sor + 1 Loop
A hónap neve legyen mondjuk a T1 cellában (innen fűzi be a névhez). Ugyanezt a hónap nevet írd be az S1 cellába is konkrét név legyen mindkét helyen, nem képlet.
Mielőtt a másolás (for ciklus) elindulna, azaz a for utasítás elé tedd be ezt a sort:
if range("S1").value<>range("T1").value then mkdir range(utvonal cella).value & range("T1").value:range("S1").value=range("T1").value
Az új hónapot pedig mindig a T1 cellába írd be, az S1 cellába ne. Ebből fogja tudni a makró, hogy új könytárat kell létrehoznia.
Természetesen a T1 és S1 cella csak egy javaslat, oda írd be, ahol neked megfelelő.
Köszönöm a segítséget. Így már mindjárt teszi a dolgát... A gombot úgy képzeltem, mintha lebegne a munkalap felett, és mindig ott marad aképernyőhöz viszonyítva, de így is tökéletes. Nem tudtam mik a lehetőségek ezzel kapcsolatban... Mégegyszer köszi a megoldást, nagyon tetszik!
Annyit csináltam, hogy a másoló fájlban beírtam az alap útvonalat egy oszlopba majd a hónap nevét egy oszlopba, és a neveket is, melyek összefűzve jelennek meg a A oszlopban, ami alapján megcsinálja a makró a másolást.
Tuti, hogy nem tudom beilleszteni az MkDir utasítást a makróba helyesen, marad a manuális mappalétrehozás :) (ami már tényleg nem nagy munka)
Nem akarlak tovább fárasztani, így is nagyon sokat segítettél nekem !, Igazán hálás vagyok érte !!