2013-06-28 4 views
0

여러 행의 데이터에서 솔버가 반복되도록하려고합니다. 지금까지 제 코드가 있습니다. 나는 이것에 초급이고 이것은 2 개의 선을 위해 그것을한다. 나는 마지막 행까지 달리기를 원합니다. 비슷한 질문에 대한 답을 읽고 나면 범위 라인에 추가했습니다. VBA 솔버 루핑

Sub prgopt() 
' 
' prgopt Macro 
' 

' 
    SolverOk SetCell:="$C$2", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$3:$B$3", _ 
     Engine:=1, EngineDesc:=" GRG Nonlinear " 
    SolverSolve 
    Range("$C$2").Offset(Count, 0).Select 
    SolverOk SetCell:="$C$3", MaxMinVal:=2, ValueOf:=0, ByChange:="$A$3:$B$3", _ 
     Engine:=1, EngineDesc:=" GRG Nonlinear " 
    SolverSolve 
    End Sub 

는 C

+0

루프가 어떻게 되느냐에 따라 달라지며 특정 횟수만큼 또는 어떤 것이 사실 일 때까지 걸릴 것입니까? –

+0

답변 해 주셔서 감사합니다. 더 이상 존재하지 않을 때까지 솔버를 실행하고 각 행을 최적화하는 데 필요합니다. 각 행은 별도의 데이터 그룹입니다. –

+0

@doctor, 코드 제안에 감사드립니다. 해당 프로그램을 실행했지만 원하는 결과를 얻지 못했습니다. 목표는 방정식의 두 요소를 변경하여 일련의 데이터 세트에서 합계 또는 제곱 된 잔차를 최소화하는 것입니다. 각 행은 자체 방정식을 가진 별도의 데이터 집합입니다. –

답변

0

이 시도 도움을 위해 시간과 감사 주셔서 감사합니다 필요에 따라

Sub prgopt() 

' 
' prgopt Macro 
' 

' 

    Dim c As Range 
    dim nRows as int 
    nRows = 2 
    For Each c In Range("$C$2:$C$3") 
     SolverOk SetCell:=c.Address, MaxMinVal:=2, ValueOf:=0, ByChange:=c.Offset(0, -nRows).Resize(1, nRows), _ 
      Engine:=1, EngineDesc:=" GRG Nonlinear " 
     SolverSolve userfinish:=True 
     SolverFinish keepfinal:=1 
    Next 

    End Sub 

변경 범위 및 NROWS (계수 범위의 폭). 희망이 도움이됩니다.