«

»

nov 19

Nő a fájl mérete, begyorsul a görgetősáv

Ma két kollégám is megdicsérte a blogot. :-) Tegnap pedig Gábor unokatestvére írta, hogy “Rohadt jó”. :-) Örülök nagyon! S mivel megfogadtam, hogy ha egy nap ketten kérdezik ugyanazt, akkor arról posztot írok, így most igazán lelkesen teszem ezt – ma ugyanis egy órán belül kétszer is hívtak az alábbi miatt.

A probléma, ami felmerült, gyakran előfordul a munkahelyen: látszólag ok nélkül megnő a fájl mérete. Ez együtt jár azzal, hogy “elromlik” a görgetősáv: egy picit mozdítasz rajta, és máris több tízezer sort ugrik le vagy jobbra. Úgy is meg szokták fogalmazni: túl gyors a görgetősáv.

gorget_1

Hogy jobban értsük a problémát, tudni kell, hogyan működik a görgetősáv: minden Excel munkalap (2007 és későbbi verziók) több, mint egymillió sort és 16 384 oszlopot tartalmaz. A görgetősáv szerencsére “intelligens” és csak a munkalap használt részét mozgatja. Normális esetben tehát, ha a függőleges görgetősávot lehúzod a legalsó pontjáig, akkor nagyjából a munkalapon levő utolsó adat sornál kell megállnia. Ugyanígy kell ennek lennie a vízszintes görgetősávval is: az utolsó adat oszlopnál áll meg. Ezt a “használt részt” hívjuk Used Range-nek.

Próbáld ki: írj be valamit a munkalap legutolsó cellájába (XFD1048576) és nézd meg, mi történik a görgetősávval! (Könnyen megtaláljuk az utolsó cellát így: Ctrl+<Jobbra nyíl>-lal jobbra navigálunk a teli/üres szakszokon, majd Ctrl+<Le nyíl>-lal ugyanez lefelé. Ezek egyébként is nagyon praktikus navigációs funkciók. :) )

Persze az, hogy a munkalap utolsó cellájában van adat, még nem ok a fájl méretének növekedésére. Esetünkben a probléma az, hogy az Excel úgy érzékeli, a munkalapon minden cellában van valami… nem látjuk, hogy mi, de mégis ott van. Ne foglalkozzunk most azzal, hogy éppen mi ez a valami, és hogyan került oda (talán majd egyszer erről is írok). Most a megoldásra fókuszáljunk: el kell ezt a valamit tüntetni, ki kell törölni.

Amit én javasolni szoktam:

1. Keresd meg az utolsó sort, ahol még értékes adat van a munkalapon.

2. Jelöld ki az összes ez alatt levő sort. (Legyegyszerűbben: Shift+Space-el kijelöljük a teljes sort, majt Ctrl+Shift+<Le nyíl>-lal lemegyünk a munkalap aljáig.)

3. Töröld ki ezeket a sorokat – teljes sorokat törölj, nem elég a delete gomb! A menüben: Kezdőlap / Cellák csoport / Törlés (az alsó nyilat nyomd meg!) / Sorok törlése munkalapról. (Angol Excelben: Home / Cells / Delete / Delete Sheet rows) (Vagy egyszerűbben, egérrel: <Jobb gomb> / Törlés)

4. Csináld meg ugyanezt az oszlopokra is. (Egyszerű kijelölés: Ctrl+Space-el kijelöljük a teljes oszlopot, majd Ctrl+Shift+<Jobbra nyíl>-lal elmegyünk az utolsó oszlopig.)

Ezután mentsd el a fájlt, csukd be és nyisd ki újra. Ezzel – tapasztalatom szerint – az esetek többségében megoldódik a probléma.

Ma azonban láttam egy kivételt: egy kedves kolléganőm fájlja nem javult meg a fentiek elvégzése után. Az alternatív megoldás az, hogy beszúrsz egy új, üres munkalapot, és átmásolod rá az elromlott munkalapon levő hasznos tartalmat. NAGYON fontos, hogy csak azt a részt jelöld ki, ahol adat, információ van! Semmiképpen NE használd a teljes munkalap-tartalom, teljes oszlop vagy sor  kijelölést! (Hiszen akkor a szemét is átmenne…)

Kérlek, írjátok meg, hogy nálatok előfordult-e hasonló probléma, s hogy sikerült-e megoldani ezzel az eljárással!

 

4 comments

Skip to comment form

  1. Laci

    Kedves Kris!

    Nagyon tetszik a munkásságod, bár én kb. ezer éve Excel helyett a LibreOffice Calc táblázatkezelőjét használom. (szimpatikus hogy szabadon felhasználható és az ingyenessége, és hogy szinte mindenben kompatibilis a Microsoft Office-szal – ez itt a reklám helye.) :)
    Már régen gondoltam rá, hogy a posztjaidhoz mindig “idetrollkodok”, és megírom, hogy a Calcban a tipped mennyire vált be, de eddig még sajna nem volt érkezésem rá, de egyszer talán majd pótolom. Szerintem nem bánnád. :)

    Ezt azonban én is kipróbáltam, mert nagyon rossz emlékem volt egyszer az Excellel: úgy megnőtt a memóriaigénye, hogy a gépem nem is bírta megnyitni. Na jó, amit akkor csináltam, az tényleg extrém volt, és talán nem is a legjobb programot választottam a feladathoz.

    Na de hogy a tárgyra térjek, ki akartam próbálni a javaslatodat, de előtte összehasonlítottam, hogy egy kis írásnál és ugyanannál – ha a jobb alsó sarkában lévő cellájába is írok, milyen fájlterjedelem különbség jön ki.
    Eredmény (LO Verzió: 4.2.7.2 esetén):
    Alapesetben (pár cella kitöltésénél) 14,6 kB (14.629 bájt)
    jobb alsó cella (AMJ1048576) 15,0 kB (14.985 bájt)
    Szerintem ez nem olyan vészes, és lehet, hogy a dolog a másodszori bezáráskor egyéb háttérinfók miatt növekedett, amit nem is látunk.

    Ezután kipróbáltam az általad javasolt módszert, mi történik a 356 bájttal, és ezt tapasztaltam:, de a törlés módszernél alig tapasztaltam csökkenést. A másolás és új dokumentum beillesztésével 14643 lett a dokumentum mérete, az eltérésnél talán közrejátszhat hogy az új dokumentum létrehozásakor a régit nem zártam be, vagy ki tudja.

    Igaz, hogy Excelben “kicsit több” oszlop van, de kíváncsi vagyok, hogy egy a1-d3-ig csupán 6 cellával megtöltött táblázatban mekkora eltérés adóik a fájlterjedelemben

    A pontos összehasonlításhoz az is érdekes lenne, ha csak AMJ1048576 című cellába írnátok még valamit.

    A terjedelmet mindig kikapcsolt állapotban a Tulajdonságokban lestem meg.

    Én is köszönöm a választ!
    Sziasztok!

  2. Laci

    Bocsánat pont a lényegnél elszerkesztettem az írásomat.
    szóval törlésnél alig lett kisebb a duzzasztott táblázat méreténél (mentségére legyen mondva, hogy szerintem nem nagy a különbség az eredeti és a duzzasztott között, ami lényeges pozitívum), pedig nem csak a felesleges sorokat, hanem a felesleges oszlopokat is töröltem, míg a kivágással és beillesztéssel kb. ugyanakkora lett.

  3. Kinga

    Nekem tökéletesen működik a sor- és oszloptörlés, a 3,6 MB-os file-jaim hirtelen 22 kB-osra zsugorodtak:) Köszi a tippet! :)

  4. Gábor

    Szia Laci!

    Van itt egy kis félreértés: Nem attól nő nagyra a fájl mérete, hogy beírunk valamit az utolsó cellába, az csak a scrollbar kezelés bemutatása miatt kellett.

    Az Excel nagyon ügyesen csak azokat a cellákat tárolja el a fájlban, amik tartalmaznak valamit, például adatot, vagy egyedi formázást. A nagy, görgethető táblázatot a csak a képernyőn látjuk, ez csak “virtuálisan” létezik.

    Az Excelnek van ugye olyan szolgáltatása, hogy egész sorokat vagy oszlopokat meg lehet formázni. De ilyenkor az fájlban csak a – szintén csak ilyenkor létrehozott – oszlophoz tárolja le az információt, ha néhány cellát formázol, akkor azokat cellákban tárolja.

    A méretnövekedés például olyankor szokott előfordulni, ha sok cella dizájnolás után úgy megkavarodik az Excel a formázások nyilvántartásával, hogy egyszer csak “szétrobban” az oszlop (vagy a sor), és az eredetileg a teljes oszlopra mondott formázás maradékainak tárolásához létrehozza az oszlop összes cellájának mentett verzióját. Ráadásul ugye annál nagyobb adatmenyiség lesz minden cellában, minél bonyolultabb volt az oszlopon a formázás, feltételes formázás, stb.

    Ennek a méret növekedési a hibának az esélyét több dologgal lehet fokozni:
    – Mindenek előtt: teljes oszlopot/sort formázunk.
    – Régi bináris *.xls formátumot használunk.
    – Az Excel régebbi verziójával megnyitjuk a fájt, és rámentünk.
    – Open Office-al módosítjuk az Excelben készített fájlunkat.
    – Gyakran használunk szűrt listákon formázást.
    – Ezeket még kombináljuk is…

    Igazából az a sportszerűtlen nehezítés, hogy a képernyőn egészből nem látunk semmi furcsát, csak feleslegesen a megnő a fájlunk mérete (és esetleg be is lassul ettől).

    Na, ekkor kell bevetni a guillotine módszert.

    Üdvözlettel,
    Gábor
    Adatkertész

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.

Az alábbi HTML kódok használhatóak: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

css.php