• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Processor snelheid Excel

Status
Niet open voor verdere reacties.

Revolutionary

Gebruiker
Lid geworden
1 apr 2009
Berichten
183
Goede middag helpers,

Ik heb dit keer een paar algemene vragen... ik heb een excelbestand opgesteld met een groot aantal vrij lange en complexe formules. Door middel van een druk op de knop (met daarachter een macro) worden deze formules gestart en wordt er van alles en nog wat berekend. Echter het proces van berekenen duurt vrij lang, ik moet soms meer dan een minuut wachten totdat de resultaten worden getoond. Rechtsonder in het excelbestand komt dan te staan: Berekenen (1 processor(s)): ... %) waarmee het % aangeeft hoe ver de berekeningen tot dan toe zijn gedaan (ik gebruik overigens excel 2007).

Hebben jullie misschien wat algemene tips waarmee ik het proces van berekenen kan versnellen?

Blijkbaar wordt er bij mij maar 1 processor gebruikt voor het berekenen, is het mogelijk om meerdere processors te gebruiken? Of is dat afhankelijk van je pc (of in mijn geval mn laptop)?

Mijn laptop is inmiddels 2,5 jaar oud en heeft een werkgeheugen van (slechts) 2gig.. zou dat ook mee kunnen spelen? Of is de software van Excel gewoon te traag?

Alvast bedankt!

Groeten,
Tim
 
Het ligt niet aan jouw computer.

Reduceer de omvang van je Excelbestand.
Beperk het aantal lees en schrijfbewerkingen (wikkel zoveel mogelijk in variabelen af)
schakel screenupdating, het uitvoeren van events en automatische herberekening uit.
Maak zo beperkt mogelijk gebruik van matrixformules.
Vermijd kopieerakties.
Vermijd select en activate in VBA-code.
 
Laatst bewerkt:
Bedankt snb:thumb:

Toch nog een paar vraagjes:

Waar kan ik screenupdating en het uitvoeren van events en automatische herberekening uitzetten? Heeft het geen nadelen als ik deze functies uitzet?

Ik ben nog niet zo bekend met VBA, de macro's die ik heb gemaakt laat ik opnemen (ik stel ze niet zelf op in VBA zeg maar)

Ik heb twee verschillende soorten macro's gemaakt. Kan jij of iemand anders misschien aangeven wat er in onderstaande VBA codes aangepast zou kunnen zodat het bestand sneller wordt?

Code:
    Sheets("Koersen").Select
    Range("A2:R2").Select
    Selection.AutoFill Destination:=Range("A2:R11"), Type:=xlFillDefault
    Range("A2:R11").Select
    Sheets("Correlatie matrix").Select
    Range("T5:U5").Select
    ActiveCell.FormulaR1C1 = "=Koersen!R[6]C[-19]"
    Range("T6").Select

Code:
hDir "C:\Users\Tim\Documents\Koersen\PRN koersen"
    Workbooks.OpenText Filename:= _
        "C:\Users\Tim\Documents\Koersen\PRN koersen\1SP-500.prn", Origin _
        :=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
        , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 5), _
        Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers _
        :=True
    Columns("A:A").Select
    ActiveWorkbook.Worksheets("1SP-500").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("1SP-500").Sort.SortFields.Add Key:=Range("A1"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("1SP-500").Sort
        .SetRange Range("A:F")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A1:A180").Select
    Selection.Copy
    Windows("PH Monitoring Instrument.xlsm").Activate
    Range("A3").Select
    ActiveSheet.Paste
    Windows("1SP-500.prn").Activate
    ActiveWindow.LargeScroll Down:=1
    ActiveWindow.ScrollRow = 204
    ActiveWindow.ScrollRow = 177
    ActiveWindow.ScrollRow = 82
    ActiveWindow.ScrollRow = 42
    ActiveWindow.ScrollRow = 1
    Range("E1:E180").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("PH Monitoring Instrument.xlsm").Activate
    Range("B3").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=171
    ActiveWindow.ScrollRow = 171
    ActiveWindow.ScrollRow = 170
    ActiveWindow.ScrollRow = 169
    ActiveWindow.ScrollRow = 168
    ActiveWindow.ScrollRow = 166
    ActiveWindow.ScrollRow = 165
    ActiveWindow.ScrollRow = 163
    ActiveWindow.ScrollRow = 159
    ActiveWindow.ScrollRow = 154
    ActiveWindow.ScrollRow = 148
    ActiveWindow.ScrollRow = 141
    ActiveWindow.ScrollRow = 134
    ActiveWindow.ScrollRow = 131
    ActiveWindow.ScrollRow = 126
    ActiveWindow.ScrollRow = 122
    ActiveWindow.ScrollRow = 120
    ActiveWindow.ScrollRow = 118
    ActiveWindow.ScrollRow = 114
    ActiveWindow.ScrollRow = 112
    ActiveWindow.ScrollRow = 109
    ActiveWindow.ScrollRow = 108
    ActiveWindow.ScrollRow = 106
    ActiveWindow.ScrollRow = 104
    ActiveWindow.ScrollRow = 102
    ActiveWindow.ScrollRow = 98
    ActiveWindow.ScrollRow = 96
    ActiveWindow.ScrollRow = 89
    ActiveWindow.ScrollRow = 81
    ActiveWindow.ScrollRow = 77
    ActiveWindow.ScrollRow = 75
    ActiveWindow.ScrollRow = 67
    ActiveWindow.ScrollRow = 59
    ActiveWindow.ScrollRow = 51
    ActiveWindow.ScrollRow = 47
    ActiveWindow.ScrollRow = 43
    ActiveWindow.ScrollRow = 40
    ActiveWindow.ScrollRow = 36
    ActiveWindow.ScrollRow = 34
    ActiveWindow.ScrollRow = 31
    ActiveWindow.ScrollRow = 28
    ActiveWindow.ScrollRow = 26
    ActiveWindow.ScrollRow = 23
    ActiveWindow.ScrollRow = 21
    ActiveWindow.ScrollRow = 19
    ActiveWindow.ScrollRow = 17
    ActiveWindow.ScrollRow = 16
    ActiveWindow.ScrollRow = 14
    ActiveWindow.ScrollRow = 13
    ActiveWindow.ScrollRow = 12
    ActiveWindow.ScrollRow = 10
    ActiveWindow.ScrollRow = 8
    ActiveWindow.ScrollRow = 7
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 3
    ActiveWindow.ScrollRow = 1
End Sub

De tweede macro kopieert gegevens uit een ander bestand, met een ander bestandstype (.prn) daardoor lijkt het eerste deel van de VBA code misschien wat vreemd...

Deze macro's zijn ontwikkeld om steeds gegevens te verversen.. nadat de gegevens ververst zijn voert excel gelijk 300 verschillende berekeningen uit, waarbij elke berekening weer bestaat uit 4 in elkaar gevlochten ALS-functies... Zou een snellere computer er dan niet voor kunnen zorgen dat dit proces sneller gaat?

Groeten,
Tim
 
Op deze manier zet je Events uit, voer je code uit en zet de Events terug aan op het einde
Code:
Sub tst()
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual

'Hier de rest van je code

    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
End With
End Sub

Je eerste codeblokje kan je herleiden tot dit
Code:
Sheets("Koersen").Range("A2:R11").AutoFill , xlFillDefault
Sheets("Correlatie matrix").Range("T5:U5") = "=Koersen!R[6]C[-19]"

Voor wat betreft je 2de codeblok kan je al beginnen met al die ScrollRows eruit te flikkeren en al die Select, Activate en ActiveSheet eruit te gooien
 
Dankjewel Rudi:thumb:

Ik zal vandaag even kijken of het me lukt om de macro's aan te passen.

Is er niet ergens een handleiding op internet te vinden die wat meer verteld over de VBA language?

Groeten,
Tim
 
Vooral kijken in vba-helpfile van Excel.
Die is erg goed.
 
ActiveWindow.ScrollRow =
kun je in princiepe gewoon weglaten, dat is alleen een effect dat de pagina omlaag gaat dus die kun je allen wissen, verder raad ik aan om meer macro's te maken i.p.v 1, maar diezeker niet tegelijk te laten draaien.
verder helpt het bij een kops-procesoren(bijv geen quadcore) het om alle backgroundprocessen uit te zetten, dit kun je ook doen doormiddel van gamebooster, weet de site niet precies maar dan moet je even googlen, die zorgt dat alle backgroundprocessen stoppen
 
Dankjewel Rudi:thumb:

Ik zal vandaag even kijken of het me lukt om de macro's aan te passen.

Is er niet ergens een handleiding op internet te vinden die wat meer verteld over de VBA language?

Groeten,
Tim

Door enkele topics op dit forum door te nemen, waar deftige VBA-code geschreven wordt, ga je al pakweg 75% van de rommel uit je eigen code kunnen halen :thumb:
 
Bedankt mannen (en vrouwen?) :thumb:

Ik ga er mee aan de slag! Ik zet deze topic op opgelost.. als ik weer ergens tegen aan loop dan weet ik jullie te vinden;)

Groeten,
Tim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan