Avatar billede fk01 Nybegynder
01. marts 2002 - 16:00 Der er 6 kommentarer og
1 løsning

Målsøgning (GoalSeek, mange iterationer tager lang tid)

Hej
Jeg har opbygget et regneark i Excel, hvor der foretages en "Målsøgning" (GoalSeek, regnefunktion i Excel) i hver linie. Målsøgningerne er foretaget med en "makro". Jo længere ned i regnearket beregningerne kommer jo længere tid tager det at udføre beregningerne. Der skal foretages 8760 målsøgninger, dvs. der er 8760 linier i arket som skal beregnes. Dette vil tage 2 til 3 timer med den nuværende struktur. Det ser ud til at det muligvis er en opdatering af arket som tager tiden. Jeg har forsøgt, i menulinien, at slå diverse funktioner fra og til, men det hjælper ikke. Beregningerne skal foretages med forskellige parametervariartioner og vil tage flere dage med den nuværende opbygning. Er der nogle som har idé til, hvad der kan gøres for at formindske beregningstiden væsentligt samt evt. hvad som bevirker at beregningerne tager så lang tid.
Makroen ser ud på følgende måde:
Sub IterationCopy()
'
        For i = 1 To 8760
               
        ActiveCell.GoalSeek Goal:=0#, ChangingCell:=ActiveCell.Offset(0, 3).Range("A1")
       
        ActiveCell.Offset(0, -26).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.copy
        ActiveCell.Offset(1, 0).Select
        Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
       
        'ActiveCell.Offset(-4, 0).Select
        'Range(Selection, Selection.End(xlToRight)).Select
        'Selection.EntireRow.Hidden = True
       
        ActiveCell.Offset(0, 26).Select
        Next
End Sub

Med venlig hilsen fk
Avatar billede bak Forsker
01. marts 2002 - 16:31 #1
Du har en mærkelig adresse på din ChangingCell
Er det A1 der skal ændres eller er det Activecell.offset(0,3) ??
Avatar billede fk01 Nybegynder
01. marts 2002 - 16:47 #2
Tak for den hurtige kommentar. Det er Activecell.offset(0,3)som findes vha. målsøgningen.
Avatar billede bak Forsker
01. marts 2002 - 17:37 #3
prøv lige at teste denne makro
Sub IterationCopy()
Range("aa2").Select
        For i = 0 To 8760
        ActiveCell.Offset(i, 0).GoalSeek Goal:=0#, ChangingCell:=ActiveCell.Offset(i, 3)
        Range(ActiveCell.Offset(i, -26), ActiveCell.Offset(i, -1)).AutoFill Destination:=Range(ActiveCell.Offset(i, -26), ActiveCell.Offset(i + 1, -1))
        Next
End Sub
Avatar billede bak Forsker
01. marts 2002 - 17:38 #4
Sorry, fik lavet en lille fejl:

Sub IterationCopy()
Range("aa2").Select
        For i = 0 To 8760
        ActiveCell.Offset(i, 0).GoalSeek Goal:=0#, ChangingCell:=ActiveCell.Offset(i, 3)
        Range(ActiveCell.Offset(i, -26), ActiveCell.Offset(i, 0)).AutoFill Destination:=Range(ActiveCell.Offset(i, -26), ActiveCell.Offset(i + 1, 0))
        Next
End Sub
Avatar billede bak Forsker
01. marts 2002 - 18:29 #5
Lige under sub IterationCopy() kan du skrive
Application.Screenpdating=False
så vil skærmen ikke stå og opdatere mens programmet kører.
Dette vil forøge hastigheden noget
Avatar billede bak Forsker
01. marts 2002 - 18:59 #6
Selvom min kode nok er hurtigere, tilføjer du jo stadig flere og flere formler som skal genberegnes for hver linie.
Du kan slå automatisk genberegning fra ved at indsætte denne linie
Application.Calculation = xlCalculationManual
Når koden er færdig (før end sub) skriver du
Application.Calculation = xlAutomatic

En anden ide er at slette formlerne igen efter hver Goalseek, hvis du ikke skal bruge dem mere. Så skal der ikke genberegnes nogen formler. Hvis det er en mulighed så indsæt denne linie før next

Range(ActiveCell.Offset(i, -26), ActiveCell.Offset(i, 0)).Clear
Avatar billede bak Forsker
03. marts 2002 - 21:20 #7
Du er velkommen til at sende mig et uddrag af dit regneark til tommybak@netscape.net
Så skal jeg prøve at optimere det for dig.
Hvis formlerne kan slettes igen efter hvert goalseek vil jeg anslå at beregningstiden kommer under 1 minut (P350) ellers omkring 15 min. afhængig af antallet af formler.
Bak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester