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.
Köszi az előzőt! Új kérdés: Van-e olyan fgv. amivel azt kérdezhetem le egy celláról, hogy képlet van-e benne, vagy sem. Azaz meg akarom különbözetni pl. azt a két cellát, hogy 2 és =2.
Egyébként nincs olyan fügvény, amivel egy halmaz valahanyadik legkisebb (legnagyobb) elemét tudom megkapni? Tehát nem a legkisebbet, hanem mondjuk az 5. legkisebbet.
Köszi! Sajnos egész mást csinál, mint szeretném. Ezt kéne csinálnia: Ha van ez első képen lévő munkalap, akkor a második munkalapnak a második képen lévővé kell változnia:
Sub Worksheet_Change(ByVal Target As Excel.Range) If (Target.Column = 1) Then nev = Target.Value End If Rendez (nev) End Sub
A Munka2 lapon a B1-be írj valami címet. Ha nem a B-be akarod tenni az új adatot, csak aszerint akarsz rendezni, akkor annak az oszlopnak az 1. sorába adj címet.
Munka2-höz, de már nem a lapfülön, hanem Eszököz/Makró/Visual Basic (vagy ehelyett Alt+F11), bal oldalon kiválasztod a füzetedet. Beszúrás(Insert)/Modul.
Jobb oldalon kapsz egy üres oldalt, oda bemásolod ezt:
Sub Rendez(nev) Sheets("Munka2").Select usor = ActiveSheet.UsedRange.Rows.Count + 1 Cells(usor, 2) = nev Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Sheets("Munka1").Select End Sub
Ha másik (nem B) oszlopba íratsz, a 4. sorban a 2-t írd át az oszlop sorszámára.
Ha a művelet után nem a Munka1-en akarsz kikötni, hagyd el a Sheets("Munka1").Select sort.
Ha vannak olyan képleteid, amiknek az értékét már nem akarod változtatni, érdemes másolni, majd ugyanoda irányított beillesztéssel az értéküket beilleszteni.
Más:
Az szám alakú, de számolásra nem használt adatok cellaformátumát – mint irányítószám, telefon – érdemes szöveg tip-ra állítani már az adatok bevitele előtt. A szöveg kevesebb helyet igényel.
Ha már fel van töltve a táblázat, a FIX függvénnyel és az irányított beillesztés értékkel-lel végezd el az átállításukat.
"Mindegyik lapfülhöz hozzá kell rendelni a makrót, mert csak az adott lapra vonatkozik."
Sajnos még soha nem használtam makrót, ezért ezt nem értem. Jelen pillanatban ott állok, hogy meg van nyitva a VB-ablak és be van másolva a kód. Hogyan tovább?
Természetesen nem gondolom, hogy szépen egyesével mindenkinek el kell magyarázni a dolgot, így nekem sem. Egy jó leírás valahol, hogy hogyan kell a makrókat alkalmazni?
Akkor sorban mondom: 1. Nagyon köszönöm, pontosan erre volt szükségem! Nagy segítség volt!
2. Esetleg ismert valami trükk, amivel csökkenthetném a fájlméretet?
3. Na, ez nem sikerült. Mondom lépésről lépésre, mit csináltam:
Van egy munkalapom (neve M1), ezen van ez: 1; b 2; c 3; a
Van egy másik munkalapom, ami üres (neve M2). Rákattintok jobb gombbal az M2-re, kiválasztom azt, hogy Kód megjelenítése. Erre megjelenik a Visual Basic ablak. Bemásolom az általad írt kódot.
Nagy öröm, hogy rátaláltam erre topikra, mert nagyon szeretem az excelt, sok hülyeséget csináltam már magam örömére, vagy munka, segítség miatt benne. (Nem vagyok guru, főleg, mert makrók nélkül dolgozok, de ezen majd lassan már kell változtatnom.) Három kérdés:
1. kérdés
Van 4 munkalapom, amelyek neve mondjuk Munka, Alma, Körte, Narancs. A Munka nevű lap A sora úgy néz ki, hogy Alma; Körte; Narancs
Azt szeretném, hogy a B sor így nézzen ki: =Alma!$A$1; =Körte!$A$1; =Narancs!$A$1
De úgy, hogy ha az Almár Körtére cserélem, akkor a hivatkozás is cserélődjön. Mondjuk, ha az A1 változik Alma helyett Körte lesz, akkor a B1-ben legyen =Alma!$A$1 helyett =Körte!$A$1
Vagy általánosabban hogyan lehet egy cellahivatkozást függvénnyel összerakni. Az is segítene, ha csak a munkalapon belül menne ez: A sor: 4; 6; 9; B sor: =D4; =D6; =D9
De, ha változatatom az A1-et 7-re, akkor B1 legyen =D7.
2. kérdés
Van egy viszonylag egyszerű munkafüzet. A mérete mégis jó nagy. Érdekelne, hogy milyen dolgok befolyásolják a méretet. Tudtok erről valamit? Az is megfelelne, hogy ha az alapértelmezett 65e sort tudnám szűkíteni pl. 1000-re.
3. kérdés
Itt az a kérdés, hogy megy-e makró nélkül, vagy most kezdjek tanulni (itt elég csak rögzíteni).
Az egyik lap így néz ki:
1; Barack
2; Körte
3; Alma
Azt szeretném, hogy egy másik munkalapon megjelenjenek ue. a párok, de a 2. oszlop szerint abc-sorrendben. Persze lehet menüből rendezni, de nekem az kellene, hogy ha átírok valamit az első munkalapon, akkor a sorrend is update-elődjön.
Készítettem egy 305 soros táblát próbából, mert nyomtatásnál a mezőneveket minden oldal tetejére ki kellene nyomtatni és ezt képtelenség beállítani (nálam). A beállításra szolgáló lapon (Oldalbeállítás / Lap fül) az ide vonatkozó mezők valami folytán le vannak tiltva (szürke és kiválasztahatlan!!) még akkor is, ha az eredetiben, ill. kézzel beállított x számú (pl. 20 oldal magas) oldalra szeretném kinyomtatni.
Fel lehet oldani a "Fennt ismétlődő sorok" tiltását valahogy??
Sub Gepkocsi() Sheets("Összes").Select Range("A1").Select Selection.CurrentRegion.Select Tomb = Selection.CurrentRegion For sor = 2 To UBound(Tomb) lapnev$ = Cells(sor, 1).Value Sheets(lapnev$).Select: Range("A2").Select Tomb_lapnev = Selection.CurrentRegion Range(Cells(2, 1), Cells(UBound(Tomb_lapnev), 5)).Select Selection.ClearContents Sheets("Összes").Select Next
For sor = 2 To UBound(Tomb) lapnev$ = Cells(sor, 1) Sheets(lapnev$).Select: Range("A1").Select Tomb_lapnev = Selection.CurrentRegion For oszl = 1 To 5 Cells(UBound(Tomb_lapnev) + 1, oszl) = Sheets("Összes").Cells(sor, oszl) Next Sheets("Összes").Select Next End Sub
A számot tartalmazó soroknak egy üres oszlopába írd: =fix(An;0), ahol az n a sorszám. Kijelölöd ezt a cellát, Ctrl+C-vel másolod, majd az A oszlopba irányítottan, értékként beilleszted. Ezután a függvényt tartalmazó cella tartalmát kitörölheted.
A javítások után érdemes kijelölni az A oszlopot, és cellaformátumnak a szöveget beállítani. Ezután már minden új "számos" gyártódat szövegként értelmezi.