#1
|
|||
|
|||
VBA with goal seek takes too long
Hi,
I have got an issue with running a VBA command. The command repetes the goal seek function for all my observations (one oberservation=one line). Since I have a total of 670.000 oberservations it takes a very long time for excel to compute all the numbers. A friend of mine helped to build the VBA command: Code:
Public Function Zielwert() Dim z As Integer z = 2 For i = 1 To 500 Range("EY" & z).GoalSeek Goal:=Range("K" & z).Value, ChangingCell:=Range("EW" & z) Range("EY" & z).GoalSeek Goal:=Range("K" & z).Value, ChangingCell:=Range("EW" & z) z = z + 1 Next i End Function So I need a solution for how to perform the goal seek function with VBA but a lot faster than right now. Maybe a change in the VBA command is required or several VBA commands in different sheets, since it runs faster with smaller numbers of observations? Does anyone know what to do? Thanks in advance! Last edited by macropod; 07-21-2015 at 02:17 PM. Reason: Added code tags & formatting |
#2
|
||||
|
||||
First off, why do you have two of:
Range("EY" & z).GoalSeek Goal:=Range("K" & z).Value, ChangingCell:=Range("EW" & z) As for the increase in time taken, that's probably because you're not giving the OS & Excel any housekeeping time. Try inserting the following into your loop: If i Mod 100 = 0 Then DoEvents
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
Thanks a lot macropod!
The first advice reall helped to speed things up. When I inserted the "If i Mod 100 = 0 Then DoEvents" the duration did not change. However it still takes a really long time to compute larger sets of data. For example I tried this for 500 observations and it took 25 seconds, but with 1000 observations it took 2:40 minutes. So the time grows exponentially. Apparently Excel has problems with larger samples. Do you think it might make sense to conduct the goal seek function in consecutive sheets to work with smaller numbers of observations each time? And if yes how would the loop for this have to look like? Thanks in advance! |
#4
|
||||
|
||||
You could probably speed things up further by starting your macro with:
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual and ending it with: Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
Tags |
goal seek, sample, vba code |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Automatic goal seek program-Help required | calltobala | Excel Programming | 0 | 05-08-2015 08:41 AM |
Excel 2013, Problem with a shared file, takes long time to load and save and loads missing data | PStark | Excel | 0 | 12-04-2014 07:52 AM |
Excel VBA Multiple Automatic Goal Seek Required – Please Assist us | champaben | Excel Programming | 13 | 06-22-2014 05:54 AM |
set daily goal for actual workdays, excluding weekends holidays and days off | Brian Reilly | Excel | 1 | 01-24-2014 11:56 PM |
Adding a goal line to a chart | uhlersa | Excel | 1 | 01-16-2012 08:18 PM |