Keresés

Részletes keresés

macmelon Creative Commons License 2007.12.10 0 0 6467
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.
Előzmény: macmelon (6466)
macmelon Creative Commons License 2007.12.10 0 0 6466
És természetesen ha mondjuk B2-t átírom "f"-re, akkor a Munka2 is ez lesz:
r n
--------
3 b
2 d
1 f

És így tovább.
Előzmény: macmelon (6465)
macmelon Creative Commons License 2007.12.10 0 0 6465
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:

Előzmény: Delila669 (6464)
Delila669 Creative Commons License 2007.12.09 0 0 6464

Munka1 lapfülén a Kódhoz:

 

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.

Előzmény: Delila669 (6463)
Delila669 Creative Commons License 2007.12.09 0 0 6463
Este válaszolok, ha addig nem oldódik meg.
Előzmény: macmelon (6462)
macmelon Creative Commons License 2007.12.09 0 0 6462
Bemásoltam, de az M2 még mindig tök üres.
Előzmény: Delila669 (6461)
Delila669 Creative Commons License 2007.12.09 0 0 6461
A másik lapfülön is "jobbra" kattintasz, és oda is bemásolod a makrót.
Előzmény: macmelon (6458)
Delila669 Creative Commons License 2007.12.09 0 0 6460
Beviszel egy új adatot a B oszlopba, és a makró hatására azonnal rendeződnek az adataid. (Target)
Előzmény: macmelon (6458)
Delila669 Creative Commons License 2007.12.09 0 0 6459

Fájlméret csökkentése:

 

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.

Előzmény: macmelon (6456)
macmelon Creative Commons License 2007.12.09 0 0 6458
"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?
Előzmény: Delila669 (6457)
Delila669 Creative Commons License 2007.12.09 0 0 6457

Mindegyik lapfülhöz hozzá kell rendelni a makrót, mert csak az adott lapra vonatkozik.

Újabb javítás: a Key marad 1 (egy kulcs szerint rendezel).

Előzmény: macmelon (6456)
macmelon Creative Commons License 2007.12.09 0 0 6456
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.

És most mit kell tennem / mit csináltam rosszul?

Nagyon köszi!
Előzmény: Delila669 (6454)
Delila669 Creative Commons License 2007.12.09 0 0 6455

Az előbbi makró az első oszlop változását figyeli, és azt rendezi.

Az első oszlophoz ezeket kell átírni:

 

  If (Target.Column=2) Then

  Selection.Sort Key2:=Range("B2"), ... stb

Előzmény: macmelon (6453)
Delila669 Creative Commons License 2007.12.09 0 0 6454

Szia!

 

1. A2-be Adatok/Érvényesítéssel listából bevittem a 3 másik lapod nevét. Ez adja a lap nevét;

    B2-be szintén listából, A  B ... J-t, ez az oszlopot;

    C2-be 1  2 .... n (ahány sorod van);

    D2-be =INDIREKT(A2&"!"&B2&C2)

    Ez irányelv, variáld kedved szerint.

 

2. A sorok számát nem lehet variálni. A fájl mérete függ az adatok tartalmától, pl. a képletek növelik azt.

 

3. A lapfülön kattints jobb gombbal, válaszd a kódot, és másold be ezt:

 

Sub Worksheet_Change(ByVal Target As Excel.Range)

  If (Target.Column=1) Then

     Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _

       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

  End If

End Sub

 

Előzmény: macmelon (6452)
macmelon Creative Commons License 2007.12.09 0 0 6453
Közben nyomozok. Az 1. kérdés második felére részben megoldás lehet az INDEX fgv., persze nem szószerint ezt csinálja, de esetleg megfelelhet.
Előzmény: macmelon (6452)
macmelon Creative Commons License 2007.12.08 0 0 6452

Sziasztok!

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.

 

Minden ötletet, meglátást előre is köszönök!

grja Creative Commons License 2007.12.08 0 0 6451
KÖSZI!!!
Előzmény: Törölt nick (6450)
Törölt nick Creative Commons License 2007.12.07 0 0 6450
akkor inaktív (szürke) az a mező, ha a Nyomtatási kép/Beállít funkcióját használod
Előzmény: grja (6448)
Törölt nick Creative Commons License 2007.12.07 0 0 6449
Ne a nyomtatási képen keresztül akard beállítani. Használd a menü/oldalbeállítás funkciót.
Előzmény: grja (6448)
grja Creative Commons License 2007.12.07 0 0 6448

Sziasztok!

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??

Előre is köszönet a megfejtőnek!!

grja

Delila669 Creative Commons License 2007.12.07 0 0 6447
Szívesen.
Előzmény: szenyor Lopez (6446)
szenyor Lopez Creative Commons License 2007.12.07 0 0 6446
Nagyon frankó! Köszönöm!
Előzmény: Delila669 (6445)
Delila669 Creative Commons License 2007.12.07 0 0 6445

Ez már kezeli a számokat is

 

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

Előzmény: szenyor Lopez (6443)
Delila669 Creative Commons License 2007.12.07 0 0 6444

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.

Előzmény: szenyor Lopez (6442)
szenyor Lopez Creative Commons License 2007.12.07 0 0 6443
Igazából nem is kellene megváltoztatni a tipusát, csak a makroban, hogy tudjon vele dolgozni. Vagy erre nincs mód?
Előzmény: Delila669 (6441)
szenyor Lopez Creative Commons License 2007.12.07 0 0 6442
Ok, a több oszlop műxik. A másik rész viszont nem. Hiába írom a fixet a lapnev -hez, nem működik...
Előzmény: Delila669 (6440)
Delila669 Creative Commons License 2007.12.07 0 0 6441

Az átalakítást már eleve az Összes lapon kellene megcsinálnod.

A makróból kiveheted a rendező sort, ha nem akarod az eredeti sorrendet megváltoztatni.

 

Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Előzmény: szenyor Lopez (6439)
Delila669 Creative Commons License 2007.12.07 0 0 6440

A FIX függvény

 

=fix(cellahivatkozás;0)

ahol a 0 a tizedesek száma

 

Az öt sor helyett, ahol beírja a lapokra az adatokat, vidd be ezt

 

        For oszl = 1 To 5
            Cells(UBound(Tomb_lapnev) + 1, oszl) = Sheets("Összes").Cells(sor, oszl)
        Next

és a To 5-öt javítsd annyira, ahány oszlopod van.

Előzmény: szenyor Lopez (6439)
szenyor Lopez Creative Commons License 2007.12.07 0 0 6439

Köszönöm, működik! Nem viszi át az összes oszlopot, de majd módosítom a makrót, talán az már menni fog;)

Viszont egy dolog feltűnt: ha a lapnév szám és a szétdobási paraméter is szám, akkor hibával leáll. Milyen függvény alakítja át az excelben lévő számot szöveggé vb-ben? Úgy lenne bolondbiztos;)

Előzmény: Delila669 (6438)
Delila669 Creative Commons License 2007.12.07 0 0 6438

Itt van a megoldás:

 

Sub Gepkocsi()
    Sheets("Összes").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    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).Value
        Sheets(lapnev).Select: Range("A1").Select
        Tomb_lapnev = Selection.CurrentRegion
        Cells(UBound(Tomb_lapnev) + 1, 1) = Sheets("Összes").Cells(sor, 1).Value
        Cells(UBound(Tomb_lapnev) + 1, 2) = Sheets("Összes").Cells(sor, 2).Value
        Cells(UBound(Tomb_lapnev) + 1, 3) = Sheets("Összes").Cells(sor, 3).Value
        Cells(UBound(Tomb_lapnev) + 1, 4) = Sheets("Összes").Cells(sor, 4).Value
        Cells(UBound(Tomb_lapnev) + 1, 5) = Sheets("Összes").Cells(sor, 5).Value
        Sheets("Összes").Select
    Next
End Sub

Előzmény: szenyor Lopez (6436)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!