Hivatkozott Excel verzio: Excel 2007 Excel 2010 Excel 2013
A nagy méretű, sok képletet tartalmazó munkafüzetekkel bizony meggyűlhet a bajunk. A képletek állandó újraszámolása sok időbe telhet, és ez gátolhatja a munkavégzést.
Ilyenkor ki szoktuk kapcsolni az automatikus újraszámolást, és áttérünk manuális újraszámolásra, amihez a következő billentyűkombinációkat használhatjuk:
- F9 – minden nyitvalévő munkafüzetben újraszámolja azokat a képleteket, amelyeknek az elődcellái változtak , tehát csak az általa szükségesnek vélt képleteket számolja újra.
(VBA: Application.Calculate) - Shift+F9 – Az előzőt teszi, de csak az aktuális munkalappal.
(VBA: ActiveSheet.Calculate) - Ctrl+Alt+F9 – Minden nyitott munkafüzetben minden képletet újraszámol.
(VBA: Application.CalculateFull) - Ctrl+Shift+Alt+F9 – Minden nyitott munkafüzetben minden képletet újraszámol, és ellenőrzi, illetve újraépíti a függőségeket.
(VBA: Application.CalculateFullRebuild)
Ha számít a sebesség, és egy problémára többféle megoldási ötletünk is van, akkor érdemes lehet a gyorsabbat választani. A sebesség vagy egyértelműen látszik, vagy mérni kell. Például kevesebb mennyiségű teszt adaton végzett mérés rámutathat a majdani sok adattal történő viselkedésre.
Az Excel kalkuláció mérése
Van egy nagyon érdekes cikk az Excel 2007-es verzióhoz, ahol a működési sebességet befolyásoló tényezőket taglalják.
Itt a link: http://msdn.microsoft.com/en-us/library/aa730921.aspx
Megadnak ott egy VBA kódot, amivel a fenti újrakalkulációs időket lehet számolni. Elég, ha a kódot tartalmazó munkafüzetet megnyitjuk, és máris használhatjuk a mérést. A kódokat tartalmazó munkafüzet letölthető az excel-bazis.hu-ról is.
A MICROTIMER() függvény Windows API hívásokkal éri el az operációs rendszer óráját, így akár mikroszekundumokat is képes mérni. A mérés úgy működik, hogy kikapcsolja az automatikus újrakalkulációt, majd a választott kalkulációs móddal újraszámol, közben pedig megméri az eltelt időt. A mérés végén az eredményt másodpercben egy üzenetben megjeleníti, majd beírja azt az aktuális cellába.
A videóból pedig kiderül, hogyan kell használni.
Kalkulációs modell mérése
Sziasztok!
Tudna valaki segíteni, mit kell megváltoztatni ebben, hogy Exel2016 64-bites verzió alatt is működjön?
Előre is köszönöm a segítséget.
Miklós
Private Declare Function getFrequency Lib „kernel32” _
Alias „QueryPerformanceFrequency” (cyFrequency As Currency) As Long
Private Declare Function getTickCount Lib „kernel32” _
Alias „QueryPerformanceCounter” (cyTickCount As Currency) As Long
Szia!
Igen, tudom, hogy ez 64 biten sajnos nem működik.
Még nem nagyon volt érkezésem nyomozni, de most találtam egy ilyet, amit esetleg megpróbálhatsz.
A Long helyett a LongLong.
Furcsa lenne, ha „csak” ez megoldaná a dolgot, de egy próbát megér.
Chip Pearson-nál találtam
http://www.cpearson.com/excel/Bitness.aspx
Imre
Szia!
köszönöm, működik az alábbival:
Private Declare PtrSafe Function getFrequency Lib „kernel32” _
Alias „QueryPerformanceFrequency” (cyFrequency As Currency) As LongLong
Private Declare PtrSafe Function getTickCount Lib „kernel32” _
Alias „QueryPerformanceCounter” (cyTickCount As Currency) As Long
‘
Én is nagyon köszönöm.