2015-08-14 74 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