2015-08-14 71 views
1

試圖學習新的技巧,所以忍受我在這裏, 我試圖通過用盡所有我的日常能力來優化容量,而不會耗盡年度容量。所以有很多目標尋求。下面的代碼工作,但它很慢,特別是當我做了幾個月的東西。有什麼方法可以加快速度?我正在做什麼常見的noob錯誤?我如何加快我的目標尋找代碼?

Sub cashPark() 


Set enddate = Sheets("Cash").Range("E4") 
Set Window = Sheets("Cash").Range("D8") 
Set TargetWindow = Sheets("Cash").Range("D9") 
Set datecount = Sheets("Cash").Range("E4") 
Set cashParkVol = Sheets("Inventory").Range("BW1") 
Set Repeat = Sheets("Cash").Range("E5") 

cashParkVol.Offset(datecount, -2).GoalSeek _ 
Goal:=0 And Window.Value > 0, _ 
ChangingCell:=cashParkVol.Offset(datecount, 0) 


Let x = 0 
Do While x < Repeat 
cashParkVol.Offset(datecount + x, -2).GoalSeek _ 
    Goal:=0 And Window.Value > TargetWindow, _ 
    ChangingCell:=cashParkVol.Offset(datecount + x, 0) 
x = x + 1 
Loop 

末次

+1

好的問題,我沒有答案,除非想知道你是否應該使用Excel的Solver? –

回答

0

我知道這是老了,但我無意中發現了這個問題,我住在這裏希望的角度來看可能會有所幫助回答。

很難說沒有看到你的實際excel模型,但正如部分提到道格的評論,這聽起來像一個問題,將受益於另一種方法。我的猜測是,你的追求目標實際上是不能夠通過Linear Programming,在簡化的意義上,你會被解決類似以下內容來完成:

enter image description here

基本上你優化您的日常使用能力基於全年每個點使用該容量的價值。你的實際問題肯定是不同的,但我希望它有足夠的開始。

在這種情況下,Excel的內置解算器不會解決該問題,而是Open Solver可以工作,或者用於更復雜或非線性的問題Solver Studio