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.
Elnézést a késői válaszért, 2 napig nem voltam netközelben.
Egy rövid makróval meg lehet oldani.
Sub Darabszamok() Dim sz As Long, sor As Long, usor As Long, lap As Long Application.ScreenUpdating = False
sz = Worksheets.Count - 1 sor = 1 For lap = 1 To sz Sheets(lap).Select Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets(Worksheets.Count).Range("A" & sor) sor = Sheets(Worksheets.Count).Range("A60000").End(xlUp).Row + 1 Next
A makrórögzítés hasznos dolog, de arra való, hogy műveleteket rögzíts vele. Ha a rögzített művelet az, hogy egy pár soros szöveget bemásolsz a munkalapra, akkor a makró visszajátszáskor pontosan ezt fogja csinálni: bemásolja a szöveget a munkalapra.
A munkafüzetek egylépéses bezárását illetően, mint azt Nyuszi kolléga már pedzegette, makróval könnyedén meg lehet oldani. Az alábbi kódra lesz szükséged. Ez kérdés nélkül bezár minden nyitott munkafüzetet, és menti a változásokat. Nem kell hozzá a piros X használata, csak el kell indítani a makrót. A kód:
Sub CloseAll() Dim wb As Workbook For Each wb In Workbooks wb.Close savechanges:=True Next End Sub
Ha viszonylag gyakrabban akarod használni, célszerű a makrót az egyéni makró-munkafüzetbe tenni. Ha nincs egyéni makró-munkafüzeted, akkor tedd a következőt:
1. Menüből válaszd az Eszközök - Makró - Új makró rögzítése parancsot.
2. A makró helyeként válaszd az egyéni makró-munkafüzetet.
3. Indítsd el a rögzítést
4. Állítsd le.
Ezzel az Excel automatikusan létrehozott egy Personal.xls navű fájlt, ami mindig be fog töltődni, valahányszor az Excelt elindítod. Az itt tárolt makrókat mindig el tudod érni.
Lépj át VB editorba (ALT + F11).
Keresd meg bal oldalt a personal.xls-t, azon belül valamelyik modult (pl. Module1), és arra tedd fel a fenti kódot.
ALT+F8-cal lehet indítani, esetleg hozzárendelni valami gombhoz vagy menüponthoz.
Kézi folyamat végén vagyok, átírok pár dolgot, megyek a következőre, stb. Ezek után kellene bezárni őket, de úgy látom, mindenképpen egyesével kéri a megerősítést.:-(
Hopp, nekem is hasonló feladatot kell megoldanom, de nem tudtam követni, nálatok mi volt a végső megoldás?
Nálam az a feladat, hogy ha a lapokon pl. ezek szerepelnek:
1. lap
alma
banán
körte
2.lap
alma
banán
citrom
3.lap
alma
körte
narancs
akkor az összesitön ez szerepeljen:
alma 3
banán 2
citrom 1
körte 2
narancs 1
Én arra gondoltam, hogy legjobb lenne átmásolni a listákat egy új lapra egymás alá és abc-be rendezve megszámolni, melyikböl mennyi van - csak az a gond, hogy ez adatbáziskezeléssel menne, de táblázatnál nem tudok olyan lehetöségröl, hogy egymás alá másolná az elemeket.:-(
Makróból be tudod zárni. Van lehetőség úgy is bezárni őket ezzel a módszerrel, hogy ne mentse a változtatásokat, és arra is, hogy kérdezzen rá, vagy kérdés nélkül mentsen.
Egy másik kérdés: amikor megnyitok sok munkafüzetet, mindegyikkel dolgozok egy picit, majd a végén azt mondom, hogy mentse el mindet, akkor ezt miért kell egyesével megismételnem? Azért választom, hogy mindet, mert azt akarom, utálatos, hogy ennek ellenére mindegyikre egyesével rákérdez, hogy ezt is, ezt is, ezt is?? :-((
Nem lehetne valahogy lezárni, hogy mindet mentse és kész?
Nem lenne probléma, viszont utána az eredetire nincs szükségem, ha viszont azt az oszlopot kitörlöm, az szemmel láthatóan megzavarja, mert krikszkrakszok lesznek a számok helyett. Ráadásul alapból szabad oszlopom sincs mellette, bár ez még oszlop beszúrásával megoldható. De mondom, nekem a végén csak ez a /1-el végződő oszlop kell, a másik nem.
Ha szükséges, akkor Copy / Paste Value kombinációval fixálhatod a C oszlop érintett celláinak tartalmát és ki is törölheted a mostmár haszontalan B sort.
Az A1 helyett azt a cellát írd, ahol az adatod van, amit ki akarsz egészíteni a /1-gyel. Lemásolod a többi cellád mellé. Kijelölöd az új oszlopot, másolod (Ctrl+c).
Ráállsz az eredeti oszlopod első cellájára, jobb klikk, Irányított beillesztés, a Beillesztések közül az Értéket választod. Az összefűzést tartalmazó oszlopot törölheted.
Az összes lapot kijelölve beszúrom a belépő emberhez a szükséges sort oda, ahova az ABC rend megkívánja. Megszüntetem az együttes kijelölést, a jan lapra beírom a nevet. Kijelölöm az összes többi lapot, és beírom a jan lapra történő hivatkozást.
Ez a művelet kevesebb időt vesz igénybe, mint ennek a pár mondatnak a leírása.
Ha van egy listám mindenféle számokkal, és minden szám végére oda kell biggyesztenem, hogy /1, arra van valamilyen gyors módszer, vagy muszáj egyenként odaírogatni?
Nekem is Delila ötlete jutott eszembe, de ha havonta változnak a nevek és az egyes havi lapkon igényesen ABC-be rendezve akarom látni a neveket, akkor ez a 3D-s összegző mutatvány nem létezik.
Persze, ettől még nem kell makrózni, lehet fkressel, stb.
Vagy gyártok egy táblázatot, beírom a munkakezdés időpontot egy oszlopba, és egy másikba a munka kilépés időpontját.
Aztán csinálok egy pivotot, csoprtosítok hónapra és alkalmazom a "Jelentés szűrők oldalankénti megjelenítése" csodafegyvert és máris létrejönnek a havi kimutatások.