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.
Ebből is látszik, hogy Sznidoval együtt kisemberek vagyunk. De sztem a zseni is csak a saját maga által keltett káoszban ismeri ki magát, de nem a máséban ;-)
Visszaolvastam jópár hozzászólást, de vagy én voltam vaksi, vagy nem volt hasonló kérdés.
Egy oszlopban vannak különböző azonosítók(számok), amik ismétlődhetnek. A 2. dimenzióban a soroknál 1-x -ig a hozzá tartozó értékek.
Megoldandó: szeretném egy külön táblázatba kigyűjteni az oszlopokban előforduló azonosítókhoz tartozó 1-x-ig(nem ismétlődnek) az összegeket, tehát ha 123 azonosító 53-szor fordul elő, és a hozzá tartozó 1-x-ig sorértékek öszzegét szeretném megjeleníteni. Remélem nem nagyon zavaros.
a b c d e f
3 1 3
3 2 3
4 3 2
5 2 2
2 1 2 stb...
és azt szeretném látni hogy pl. 3-as a összege 3 példa szerint a b 6...és így az összes tagra.
2) Nyomj ALT+F11-et -> belépsz a Visual Basic Editor-ba.
3) Menüből az Insert -> Module paranccsal adj egy új kódmodult a munkafüzethez. Az ilyen kódmodul való a makrók tárolására. A most hozzáadott modul meg is nyílik a képernyő jobb felső tartományában.
4) Ebbe a modulba másold be a makró kódot, amit a 14260. hsz-ben küldtem.
5) A bemásolt kódban a "C:\itt_vannak_a_fájlok_mappa\" helyére írd be azt a mappát, amelyikben a feldolgozandó excel munkafüzetek vannak. Teljes elérési út kell, és \ (Backslash) jel legyen a végén.
6) Térj vissza az Excel főablakba és mentsd el ezt a munkafüzetet, akámilyen néven, akárhová, csak ne abba a mappába, amit az 5) pontban megadtál.
A fenti lépésekkel létrehoztál egy munkafüzetet, benne egy akárhányszor lefuttatható makróval.
A makró futtatása:
ALT+F8 gombokkal előhozod a létező makrók listáját, ott kiválasztod az "Összevon" nevűt, és az Indítás gombra kattintasz. Akkor a kód lefut, és azt fogja csinálni, amit korábban írtam.
Az összevont cellákat tartalmazó tartományt nem gombbal, menüből sem tudod rendezni. Többször, többen írtuk már ebben a fórumban, hogy az összevonásokat a lehetőség szerint el kell kerülni.
Tegyél be ide egy képet a tartományodról, lehetnek hamisak is az adatok.
Volt már, hogy segítséget kértem itt a fórumon, viszont lenne egy-két téma, amit a témát megfelelő mélységben ismerővel megbeszélnék személyesen Pécsen. Ebből levehető, hogy célszerűségi alapon pécsi, vagy Pécs környékieknek lenne egy-két alkalommal fizetős feladat.
Témakörök:
-Adatbevitel, vagy adatok kinyerése adott cellába egy cella mellett megjelenő "lebegő" ablakban lévő munkalapról. A celláról lelépéskor eltűnik, vagy cserélődik a használható "lebegő" munkalap.
-Több munkalapról kigyűjtött adatok elküldése e-mailben másik felhasználóhoz, és ott egy struktúraazonos munkafüzetbe adatok beolvasása. (Nem ugyanannak a fájlnak a közös használata)
-Hiperhivatkozások halmazából (kb. 50 db.) Kiválasztani azt a 3-5öt amit egy- egy faladathoz használni lehet. (Logikai függvények)
NE JELÖLD KI az összegző oszlopot, csak állj benne, mikor a rendező ikonra kattintasz. Ha az értékeket, és az összegzéseket tartalmazó oszlopok között nincs üres oszlop, a teljes táblázatot rendezheted így az aktuális oszlop szerint.
Egy olyan dolgot kellene holnapra meggyinálnom, ami szerintem pofonegyszerű, csak nekem nincs meg a rutinom.
Van egy terméksor, bizonyos időközönként árazva, a sorok végén eg oszlopban pl =E6+G6+I6+K6+O6+Q6+S6+U6+W6+Y6 ... egyenlet mutatja az aktuális összeget.
Eszerint a sorvégi összeg szerint szeretném csökkenő sorba tenni úgy, hogy a saját egész sorait is vigye magával, ne csak az összeg oszlopát.
Biztos értitek... Előre is kösz a segítséget, Karna
Ez azt csinálja, hogy egy adott mappában lévő összes .xls kiterjesztésű fájlt megnyitja, és azok első munkalapját átmásolja abba a munkafüzetbe, amelyikben a makró fut. Érdemes ezért egy új munkafüzetbe tenni a makrót, továbbá összegyűjteni a forrásfáljokat egy mappába, és ezen mappa teljes elérési útvonalát megadni a kód alábbi sorában:
Nem feltétlenül, mert most hogy utánagúgliztam, találtam azért panaszkodást usedrange ügyben.
Azt olvastam, ha csinál az ember egy usedrange.rows.count-ot (v. menti a workbook-ot) akkor a usedrange elfelejt minden múltbeli cuccot, reseteli magát és a tényleges usedrange lesz.
Igen, ezt a különbséget én is észrevettem. Meg mást is. Ha például egy vadiúj, üres munkalapnak mondjuk a G6-os cellájába beírsz egy tetszőleges értéket, aztán kitörlöd, a Te programod szerint a UsedRange G6-on lesz, és ezáltal a munkalap nem-üresnek minősül. Ez szerintem nem annyira jó.
Igazából nem értem teljesen, hogy ez a UsedRange hogyan is működik, azért nem is szoktam használni..
Nagyon szépen köszönöm a While-os válaszod, kevéske tudásom alapján erre tippeltem én is.
Ez utóbbi függvényedet teszteltem. Én ezt a programot arra használom, hogy a teljesen üres munkalapoktól megszabaduljak. A két lehetőség abban eltér, hogy a függvényed minden esetben üresnek mondta a munkalapot, ha a cellák üresek voltak. A másik program (ami egyébként nem az én munkám gyümölcse) viszont ha a háttérszín, vagy cellaszegély be volt állítva, vagy valamelyik cella megjegyzést tartalmazott, akkor már nem tekintette üresnek a lapot.
Function Üresmunkalap(WS As Worksheet) As Boolean If WS.Cells.Count = Application.WorksheetFunction.CountBlank(WS.Cells) Then Üresmunkalap = True End Function
Ha a kifejezés értéke igaz, a teljes ciklusmag végrehajtódik, aztán a kifejezés újra kiértékelésre kerül. A ciklus mindaddig megy, amíg a kiértékeléskor True az eredmény. Amint egy kiértékeléskor False eredmény jön ki, a futás a Wend utáni első utasításon folytatódik.
Nem tudnám egzakt módon meghatározni a különbséget, de biztosan van, ha egyszer mindketten léteztnek...
Annyi bizonyos, hogy a Do..Loop ciklusból középen is ki lehet lépni (pl. egy feltétel kiértékelése után) az Exit Do paranccsal, míg a While..Wend ciklusban ilyen lehetőség nincs. A Help azt írja, hogy a Do..Loop utasítással rugalmasabb és strukturáltabb ciklusokat lehet írni. Abban is biztos vagyok, hogy amit While...Wend ciklussal meg lehet oldani, azt Do..Loop-pal is meg lehet, szóval az előbbit nem kell bevenned a repertoárba.
A magam részéről ezt szoktam meg, és csak akkor használok mást, ha ezzel nem tudom megoldani, amit akarok. Nem emlékszem, hogy az utóbbi 3-4 évben használtam volna Do...Loop ciklust.
Ha érdekel a téma, akkor itt egy progi, ami megvizsgálja, egy munkafüzetben, hogy üres-e a munkalap.
Dim EgyCella As Boolean Dim A1EsCella As Boolean Dim A1Ures As Boolean Dim lap As Object
For Each lap In Worksheets EgyCella = lap.UsedRange.Cells.Count = 1 If EgyCella Then A1EsCella = lap.UsedRange.Address = Cells(1).Address A1Ures = lap.Cells(1) = "" If EgyCella And A1EsCella And A1Ures Then 'üres a munkalap
Ezt While ciklust eddig nem ismertem. Illetve ismertem csak nem VBA alatt. VBA-ban én mindig a Do …. Loop ciklust használtam.
Az angol tudásom elég kezdetleges. Ez a While ugyan az és ugyan úgy működik, mint a Do … Loop? (Már amennyiben ez utóbbinál is előre írom a feltételt, mert azt látom hogy a While-nál nem lehet a végén a feltétel.) Vagy van valamilyen különbség a kettő között?
Igen, lehetne még cifrázni, mert ez csak egy kezdetleges változat.
Ha például a cél munkafüzet ugyanabban a mappában van, ahol a forrásfájlok, valószínűleg kiakad a program, amikor önmagát is meg akarja nyitni. Aztán, ha a forrás munkalapokon csatolások vannak, akkor nem tudom mi történik. Aztán az is lehet, hogy a forrásfájlok nincsenek egy helyen, vagy nem Excel formátumban, stb.
Gondoltam, majd ha a kérdező pontosít, én is pontosítok.