10 leiðir til að flýta fyrir fjölvi

Eftir því sem Excel fjölvi þín verða sífellt öflugri og flóknari gætirðu fundið fyrir því að þau tapi afköstum. Þegar rætt er um fjölva er orðið árangur venjulega samheiti yfir hraða . Hraði er hversu fljótt VBA aðferðir þínar framkvæma fyrirhuguð verkefni. Eftirfarandi eru tíu leiðir til að hjálpa til við að halda Excel fjölvunum þínum í gangi á besta frammistöðustigi.

Stöðvun blaðaútreikninga

Vissir þú að í hvert sinn sem reiti sem hefur áhrif á hvaða formúlu sem er í töflureikninum þínum er breytt eða meðhöndlað, endurreikur Excel allt vinnublaðið? Í vinnublöðum sem hafa mikið magn af formúlum getur þessi hegðun dregið verulega úr fjölvunum þínum.

Þú getur notað eiginleikann Application.Calculation til að segja Excel að skipta yfir í handvirka útreikningsham. Þegar vinnubók er í handvirkri útreikningsham mun vinnubókin ekki endurreikna fyrr en þú kveikir beinlínis á útreikningi með því að ýta á F9 takkann.

Settu Excel í handvirka útreikningsham, keyrðu kóðann þinn og skiptu síðan aftur í sjálfvirkan útreikningsham.

Sub Macro1()
Application.Calculation = xlCalculationManual
 'Settu makrókóðann þinn hér
Application.Calculation = xlCalculationAutomatic
End Sub

Ef útreikningshamurinn er stilltur aftur á xlCalculationAutomatic mun sjálfkrafa koma af stað endurútreikningi á vinnublaðinu, svo það er engin þörf á að ýta á F9 takkann eftir að makróið þitt er keyrt.

Slökkva á uppfærslu blaðsskjás

Þú gætir tekið eftir því að þegar fjölvi keyra, flöktir skjárinn þinn nokkuð mikið. Þetta flöktandi er Excel að reyna að endurteikna skjáinn til að sýna núverandi stöðu vinnublaðsins. Því miður, í hvert sinn sem Excel teiknar skjáinn aftur, tekur það upp minnisauðlindir.

Þú getur notað eiginleikann Application.ScreenUpdating til að slökkva á skjáuppfærslum þar til fjölvi er lokið. Að slökkva á skjáuppfærslu sparar tíma og fjármagn, sem gerir fjölvi kleift að keyra aðeins hraðar. Eftir að makrókóði hefur lokið við að keyra geturðu kveikt aftur á skjáuppfærslu.

Sub Macro1()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
 'Settu makrókóðann þinn hér
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Eftir að þú stillir ScreenUpdating eignina aftur á True, mun Excel sjálfkrafa kveikja á endurteikningu á skjánum.

Slökkt á uppfærslum á stöðustiku

Excel stöðustikan, sem birtist neðst í Excel glugganum, sýnir venjulega framvindu ákveðinna aðgerða í Excel. Ef fjölvi þinn vinnur með fullt af gögnum mun stöðustikan taka upp nokkur úrræði.

Það er mikilvægt að hafa í huga að það að slökkva á skjáuppfærslu er aðskilið frá því að slökkva á stöðustikunni. Stöðustikan mun halda áfram að vera uppfærð jafnvel þótt þú slökktir á skjáuppfærslu. Þú getur notað Application.DisplayStatusBar eignina til að slökkva tímabundið á öllum uppfærslum á stöðustiku, sem bætir enn frekar afköst fjölva þinnar:

Sub Macro1()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
 'Settu makrókóðann þinn hér
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
End Sub

Að segja Excel að hunsa atburði

Þú getur útfært fjölvi sem atburðarferli, sem segir Excel að keyra ákveðinn kóða þegar vinnublað eða vinnubók breytist.

Stundum gera staðlaðar fjölvi breytingar sem kalla á atburðarferli. Til dæmis, ef þú ert með venjulegt fjölvi sem vinnur með nokkra hólfa á blaði 1, í hvert skipti sem hólf á því blaði er breytt, þarf fjölva þinn að gera hlé á meðan Worksheet_Change atburðurinn keyrir.

Þú getur bætt við öðru stigi frammistöðuaukningar með því að nota EnableEvents eignina til að segja Excel að hunsa atburði á meðan fjölvi keyrir.

Stilltu EnableEvents eignina á False áður en þú keyrir fjölvi. Eftir að makrókóði þinn er búinn að keyra geturðu stillt EnableEvents eignina aftur á True.

Sub Macro1()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
 'Settu makrókóðann þinn hér
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True
End Sub

Að fela síðuskil

Í hvert skipti sem makróið þitt breytir fjölda lína, breytir fjölda dálka eða breytir síðuuppsetningu vinnublaðs, neyðist Excel til að taka tíma til að endurreikna blaðsíðuskilin sem sýnd eru á blaðinu.

Þú getur forðast þessa hegðun með því einfaldlega að fela síðuskil áður en þú byrjar á fjölvi.

Stilltu DisplayPageBreaks blaðeiginleikann á False til að fela síðuskil. Ef þú vilt halda áfram að sýna blaðsíðuskil eftir að fjölvi er keyrt skaltu stilla DisplayPageBreaks blaðeiginleikann aftur á True.

Sub Macro1()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
Activesheet.DisplayPageBreaks = False
 'Settu makrókóðann þinn hér
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True
Activesheet.DisplayPageBreaks = True
End Sub

Fresta uppfærslur á snúningstöflu

Ef makróið þitt vinnur með snúningstöflum sem innihalda stóra gagnagjafa gætirðu fundið fyrir lélegri frammistöðu þegar þú gerir hluti eins og að bæta við eða færa snúningsreiti á virkan hátt.

Þú getur bætt afköst fjölvi þinnar með því að fresta endurútreikningi snúningstöflunnar þar til allar breytingar á snúningsreit hafa verið gerðar. Stilltu einfaldlega PivotTable.ManualUpdate eignina á True til að fresta endurútreikningi, keyrðu makrókóðann þinn og stilltu síðan PivotTable.ManualUpdate eignina aftur á False til að kveikja á endurútreikningnum.

Sub Macro1()
ActiveSheet.PivotTables("PivotTable1").ManualUpdate=True
 'Settu makrókóðann þinn hér
ActiveSheet.PivotTables("PivotTable1").ManualUpdate=False
End Sub

Stýrir ekki af copy og paste

Það er mikilvægt að muna að þó Macro Recorder sparar tíma með því að skrifa VBA kóða fyrir þig, þá skrifar hann ekki alltaf skilvirkasta kóðann. Gott dæmi er hvernig Macro Recorder fangar allar afrita-og-líma-aðgerðir sem þú framkvæmir meðan þú tekur upp.

Þú getur gefið fjölvi örlítið uppörvun með því að klippa út milliliðinn og framkvæma beint afrit úr einni reit yfir í áfangastað. Þessi varakóði notar Destination argumentið til að komast framhjá klemmuspjaldinu og afrita innihald reits A1 beint í reit B1.

Range("A1").Copy Destination:=Range("B1")

Ef þú þarft að afrita aðeins gildi (ekki snið eða formúlur), geturðu bætt árangur enn meira með því að forðast afritaaðferðina allt saman. Stilltu einfaldlega gildi áfangahólfsins á sama gildi og fannst í frumhólfinu. Þessi aðferð er um það bil 25 sinnum hraðari en að nota Copy aðferðina:

Range("B1").Value = Range("A1").Value

Ef þú þarft að afrita aðeins formúlur úr einni reit í annan (ekki gildi eða snið), geturðu stillt formúlu áfangahólfisins á sömu formúlu og er í frumhólfinu:

Range("B1").Formula = Range("A1").Formula

Að nota With yfirlýsinguna

Þegar þú tekur upp fjölvi muntu oft vinna með sama hlutinn oftar en einu sinni. Þú getur sparað tíma og bætt frammistöðu með því að nota With yfirlýsinguna til að framkvæma nokkrar aðgerðir á tiltekinn hlut í einu skoti.

Með yfirlýsingunni sem notuð er í eftirfarandi dæmi segir Excel að beita öllum sniðbreytingum í einu:

    Með Range("A1"). Leturgerð
    .Bold = True
    .Skáletraður = Satt
    .Underline = xlUnderlineStyleSingle
    Enda með

Að venjast því að setja aðgerðir í With-yfirlýsingar mun ekki aðeins halda fjölvunum þínum hraðari heldur einnig auðveldara að lesa fjölkóðann þinn.

Forðastu að velja aðferðina

Macro Recorder er hrifinn af því að nota Select aðferðina til að velja sérstaklega hluti áður en gripið er til aðgerða á þá. Almennt er engin þörf á að velja hluti áður en unnið er með þá. Reyndar geturðu bætt makróafköst verulega með því að nota ekki Select aðferðina.

Eftir að þú hefur skráð fjölva þína skaltu venja þig á að breyta kóðanum sem myndast til að fjarlægja Select aðferðirnar. Í þessu tilviki myndi bjartsýni kóðinn líta svona út:

    Sheets("Sheet1").Range("A1").FormulaR1C1 = "1000"
    Sheets("Sheet2").Range("A1").FormulaR1C1 = "1000"
    Sheets("Sheet3").Range("A1").FormulaR1C1 = "1000"

Athugaðu að ekkert er valið. Kóðinn notar einfaldlega hlutastigveldið til að beita nauðsynlegum aðgerðum.

Takmarka ferðir á vinnublaðið

Önnur leið til að flýta fyrir fjölvunum þínum er að takmarka fjölda skipta sem þú vísar til vinnublaðsgagna í kóðanum þínum. Það er alltaf óhagkvæmara að grípa gögn úr vinnublaðinu en úr minni. Það er að segja, fjölvi þín munu keyra miklu hraðar ef þau þurfa ekki að hafa endurtekið samskipti við vinnublaðið.

Til dæmis, eftirfarandi einfaldi kóði neyðir VBA til að fara stöðugt aftur í Sheets(“Sheet1“). Range(“A1“) til að fá númerið sem þarf til að bera saman samanburðinn í If-yfirlýsingunni:

Fyrir skýrslumánuð = 1 til 12
     If Range("A1").Value = ReportMonth Then
     MsgBox 1000000 / ReportMonth
End If
Næsti skýrslumánuður

Mun skilvirkari aðferð er að vista gildið í Sheets(“Sheet1“). Range(“A1“) í breytu sem kallast MyMonth. Þannig vísar kóðinn til MyMonth breytunnar í stað vinnublaðsins:

Dimma MyMonth sem heiltala
MyMonth = Range("A1").Value
Fyrir skýrslumánuð = 1 til 12
Ef MyMonth = ReportMonth Þá
MsgBox 1000000 / ReportMonth
End If
Næsti skýrslumánuður

Íhugaðu að nýta breytur til að vinna með gögn í minni í stað þess að vísa beint til vinnublaða.

Forðastu of mikla tilvísun

Þegar hringt er í aðferð eða eiginleika hlutar þarf hann að fara í gegnum IDispatch tengi OLE íhlutsins. Símtölin í þessa OLE íhluti taka tíma, svo að fækka tilvísunum í OLE íhluti getur bætt hraða makrókóðans.

Til að kalla fram eiginleika eða aðferðir hlutar er framsetningaraðferð Object.Method  almennt  notuð, það er "." tákn er notað til að kalla fram eiginleika og aðferðir.

Þess vegna er hægt að dæma fjölda aðferða- eða eiginleikakalla eftir fjölda tákna ".". Því minna sem "." tákn, því hraðar sem kóðinn keyrir.

Til dæmis inniheldur eftirfarandi fullyrðing 3 tákn ".".

ThisWorkbook.Sheet1.Range("A1").Value = 100

Eftirfarandi fullyrðing hefur aðeins eitt tákn ".".

Activewindow.Top = 100

Hér eru nokkur bragðarefur til að fækka táknum "." að hlaupa hraðar.

Í fyrsta lagi, þegar þú þarft að vísa í sama hlutinn ítrekað, geturðu stillt hlutinn á breytu til að fækka símtölum. Til dæmis þarf eftirfarandi kóði að hringja í hverja línu.

ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = 100
ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = 200
ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = 300

Vegna þess að  Sheets("Sheet1")  hlutinn þarf að vísa ítrekað, er hægt að stilla hann á breytu  sht  fyrst, þannig að hvern kóða þarf aðeins að kalla einu sinni.

Set sht = ThisWorkbook.Sheets("Sheet1")
sht.Cells(1, 1) = 100
sht.Cells(2, 1) = 200
sht.Cells(3, 1) = 300

Í öðru lagi, ef þú vilt ekki lýsa yfir tímabundinni breytu sht, geturðu líka notað  With  setninguna sem nefnd var áðan. Eins og sýnt er í eftirfarandi dæmi:

With ThisWorkbook.Sheets("Sheet1")
    .Cells(1, 1) = 100
    .Cells(2, 1) = 200
    .Cells(3, 1) = 300
End With

Í þriðja lagi,  þegar það er mikið af lykkjum, reyndu að halda eiginleikum og aðferðum utan lykkjunnar.  Þegar eignargildi sama hluts er endurnotað í lykkju er fyrst hægt að úthluta eignagildinu til tiltekinnar breytu utan lykkjunnar og síðan nota breytuna í lykkjunni, sem getur náð meiri hraða. Eins og sýnt er í eftirfarandi dæmi:

For i = 1 To 1000
    ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = Cells(1, 2).Value
    ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = Cells(1, 2).Value
    ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = Cells(1, 2).Value
Next i

Hver lykkja í þessu dæmi fær Value eiginleika frumunnar Cells(1,2). Ef þú úthlutar Value eiginleikanum Cells(1.2) á breytu áður en lykkjan byrjar, færðu hraðari keyrslu. Eins og sýnt er í eftirfarandi dæmi:

tmp = Cells(1, 2).Value
For i = 1 To 1000
    ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = tmp
    ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = tmp
    ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = tmp
Next i

Ofangreindur kóði kallar  ThisWorkbook.Sheets("Sheet1")  í hvert skipti sem hann fer í lykkjur. Þú getur gert þetta hraðar með því að nota  With  yfirlýsinguna til að færa símtalið á  ThisWorkbook.Sheets("Sheet1")  utan lykkjunnar. Eins og sýnt er í eftirfarandi dæmi:

tmp = Cells(1, 2).Value
With ThisWorkbook.Sheets("Sheet1")
    For i = 1 To 1000
        .Cells(1, 1) = tmp
        .Cells(2, 1) = tmp
        .Cells(3, 1) = tmp
    Next i
End With

Forðastu að nota afbrigðisgerðir

Byrjendur kjósa venjulega að nota Variant gerð breytur, sem hefur þann kost að vera minna flókið vegna þess að hægt er að nota hvaða tegund af gögnum sem er án vandamála með minni flæði ef gögnin eru of stór fyrir heiltölu eða langa gagnategundina. Hins vegar, Varienmt gerð gögn krefjast meira auka minnisrýmis en aðrar tilgreindar tegundir (2 bæti fyrir heiltölugögn, 4 bæti fyrir löng gögn og 16 bæti fyrir afbrigðisgögn), VBA þarf lengri tíma til að vinna úr afbrigðisgögnum en aðrar tilgreindar gerðir af gögnum. Eins og eftirfarandi dæmi sýnir.

Sub VariantTest()
    Dim i As Long
    Dim ix As Integer, iy As Integer, iz As Integer
    Dim vx As Variant, vy As Variant, vz As Variant
    Dim tm As Date
    vx = 100: vy = 50
    tm = Timer
    For i = 1 To 1000000
        vz = vx * vy
        vz = vx + vy
        vz = vx - vy
        vz = vx / vy
    Next i
    Debug.Print "Variant types take " & Format((Timer - tm), "0.00000") & " seconds"
    ix = 100: iy = 50
    tm = Timer
    For i = 1 To 1000000
        iz = ix * iy
        iz = ix + iy
        iz = ix - iy
        iz = ix / iy
    Next i
    Debug.Print "Integer types take " & Format((Timer - tm), "0.00000") & " seconds"
End Sub

Í ofangreindum kóða gera línur 8 til 13 1 milljón samlagningar-, frádráttar-, margföldunar- og deilingaraðgerða afbrigðabreyta og línur 17 til 22 gera 1 milljón samlagningar-, frádráttar-, margföldunar- og deilingaraðgerða á heiltölubreytum. Í tölvunni minni tók aðgerð Variant breytu um  0,09375  sekúndur á meðan aðgerð heiltala breytu tók um  0,03125  sekúndur. Niðurstöðurnar geta verið mismunandi eftir tölvum, en  afbrigðisbreytur eru verulega hægari en heiltölubreytur .

Af þessum sökum  er mælt með því að forðast að nota Variant breytur þegar þú getur beinlínis notað tilgreinda gagnategund .

Leave a Comment

Námundun tölur í Excel 2007 með ROUND, ROUNDUP og ROUNDDOWN

Námundun tölur í Excel 2007 með ROUND, ROUNDUP og ROUNDDOWN

Fyrir þá sem vilja læra um aðferðir eins og <strong>ROUND</strong>, <strong>ROUNDUP</strong> og <strong>ROUNDDOWN</strong> í Excel 2007, skoðaðu þessa skref-fyrir-skref leiðbeiningu um hvernig á að rúnna tölur á réttan hátt.

Hvernig á að koma í veg fyrir að Microsoft Word opni skrár í skrifvarinn ham á Windows

Hvernig á að koma í veg fyrir að Microsoft Word opni skrár í skrifvarinn ham á Windows

Hvernig á að koma í veg fyrir að Microsoft Word opni skrár í skrifvarandi ham á Windows. Microsoft Word opnar skrár í skrifvarandi ham, sem gerir það ómögulegt að breyta þeim? Ekki hafa áhyggjur, aðferðirnar eru hér að neðan

Hvernig á að laga ranga prentun á Microsoft Word skjölum

Hvernig á að laga ranga prentun á Microsoft Word skjölum

Hvernig á að laga villur við prentun á röngum Microsoft Word skjölum Villur við prentun Word skjala með breyttu letri, sóðalegar málsgreinar, texta sem vantar eða glatað efni eru nokkuð algengar. Hins vegar ekki

Eyddu penna- og auðkennisteikningum á PowerPoint-skyggnunum þínum

Eyddu penna- og auðkennisteikningum á PowerPoint-skyggnunum þínum

Ef þú hefur notað pennann eða hápunktarann ​​til að teikna á PowerPoint glærurnar þínar meðan á kynningu stendur geturðu vistað teikningarnar fyrir næstu kynningu eða eytt þeim út svo næst þegar þú sýnir þær byrjarðu á hreinum PowerPoint glærum. Fylgdu þessum leiðbeiningum til að eyða penna- og auðkenningarteikningum: Að eyða línum einni á […]

Innihald stílasafns í SharePoint 2010

Innihald stílasafns í SharePoint 2010

Stílsafnið inniheldur CSS skrár, Extensible Stylesheet Language (XSL) skrár og myndir sem notaðar eru af fyrirfram skilgreindum aðalsíðum, síðuuppsetningum og stjórntækjum í SharePoint 2010. Til að finna CSS skrár í stílasafni útgáfusíðunnar: Veldu Site Actions→ View Allt efni á síðunni. Innihald síðunnar birtist. Style bókasafnið er staðsett í […]

Snið tölur í þúsundum og milljónum í Excel skýrslum

Snið tölur í þúsundum og milljónum í Excel skýrslum

Ekki yfirgnæfa áhorfendur með stórkostlegum tölum. Í Microsoft Excel geturðu bætt læsileika mælaborða og skýrslna með því að forsníða tölurnar þínar þannig að þær birtast í þúsundum eða milljónum.

Hvernig á að deila og fylgja SharePoint síðum

Hvernig á að deila og fylgja SharePoint síðum

Lærðu hvernig á að nota SharePoints samfélagsnetverkfæri sem gera einstaklingum og hópum kleift að eiga samskipti, vinna saman, deila og tengjast.

Hvernig á að umbreyta dagsetningum í Julian snið í Excel

Hvernig á að umbreyta dagsetningum í Julian snið í Excel

Julian dagsetningar eru oft notaðar í framleiðsluumhverfi sem tímastimpill og fljótleg tilvísun fyrir lotunúmer. Þessi tegund af dagsetningarkóðun gerir söluaðilum, neytendum og þjónustuaðilum kleift að bera kennsl á hvenær vara var framleidd og þar með aldur vörunnar. Julian dagsetningar eru einnig notaðar í forritun, hernum og stjörnufræði. Mismunandi […]

Hvernig á að búa til Access Web App

Hvernig á að búa til Access Web App

Þú getur búið til vefforrit í Access 2016. Svo hvað er vefforrit eiginlega? Jæja, vefurinn þýðir að hann er á netinu og app er bara stytting fyrir „umsókn“. Sérsniðið vefforrit er gagnagrunnsforrit á netinu sem hægt er að nálgast úr skýinu með vafra. Þú smíðar og viðheldur vefforritinu í skrifborðsútgáfunni […]

Quick Launch Bar í SharePoint 2010

Quick Launch Bar í SharePoint 2010

Flestar síður í SharePoint 2010 sýna lista yfir flakktengla á flýtiræsingarstikunni vinstra megin á síðunni. Flýtiræsingarstikan sýnir tengla á innihaldsefni vefsvæða eins og lista, bókasöfn, síður og útgáfusíður. Flýtiræsingarstikan inniheldur tvo mjög mikilvæga tengla: Tengill á allt efni vefsvæðis: […]