Hỏi về Excel Solver

Liên hệ QC

hadoan-pap

Thành viên tiêu biểu
Tham gia
8/7/15
Bài viết
453
Được thích
18
Em chào mọi người!

Em có đoạn code sử dụng để gọi Excel Solver và setup 1 số điều kiện vào như bên dưới ạ. Tuy nhiên khi chạy đoan code này, vì là em loop từng row nên em có thay thế các vị trí cell cố định bằng biến truyền vào kiểu như : "$EV$5069" = Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("EV" & I).Value

Nhưng đoạn code bên dưới khi em thay thế các cell đó bằng giá trị kiểu như dòng bên trên thì nó trả ra lỗi "the objecttive cell value do not converage" ạ.

Dạ, em muốn hỏi nguyên nhân và làm thế nào để có thể thay thế các vị trí cell cố định đó bằng dòng phía trên em có ví dụ ạ ?

Em xin cảm ơn!

Dim EV_Plan, FA_Plan, H_Plan As String

For I = MaHang_Start_Row To MaHang_End_Row
If Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("P" & I).Value = "Plan" And Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("L" & I).Value = "P" Then
If Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("I" & I).Value = "NG" Then
MsgBox I
EV_Plan = Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("EV" & I).Value
FA_Plan = Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("FA" & I).Value
H_Plan = Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("H" & I).Value
SolverReset
SolverOk SetCell:=FA_Plan, MaxMinVal:=1, ValueOf:=0, ByChange:=EV_Plan, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$EV$5069", Relation:=1, FormulaText:="19.75"
SolverAdd CellRef:="$EV$5069", Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$H$5069", Relation:=1, FormulaText:="105"
SolverAdd CellRef:="$H$5069", Relation:=3, FormulaText:="0"
SolverOk SetCell:=CInt(FA_Plan), MaxMinVal:=1, ValueOf:=0, ByChange:="$EV$5069", Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$FA$5069", MaxMinVal:=1, ValueOf:=0, ByChange:="$EV$5069", Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
End If
End If
Next I
 

File đính kèm

  • Untitled.png
    Untitled.png
    217.4 KB · Đọc: 7
Em chào mọi người!

Em có đoạn code sử dụng để gọi Excel Solver và setup 1 số điều kiện vào như bên dưới ạ. Tuy nhiên khi chạy đoan code này, vì là em loop từng row nên em có thay thế các vị trí cell cố định bằng biến truyền vào kiểu như : "$EV$5069" = Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("EV" & I).Value

Nhưng đoạn code bên dưới khi em thay thế các cell đó bằng giá trị kiểu như dòng bên trên thì nó trả ra lỗi "the objecttive cell value do not converage" ạ.

Dạ, em muốn hỏi nguyên nhân và làm thế nào để có thể thay thế các vị trí cell cố định đó bằng dòng phía trên em có ví dụ ạ ?

Em xin cảm ơn!

Dim EV_Plan, FA_Plan, H_Plan As String

For I = MaHang_Start_Row To MaHang_End_Row
If Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("P" & I).Value = "Plan" And Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("L" & I).Value = "P" Then
If Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("I" & I).Value = "NG" Then
MsgBox I
EV_Plan = Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("EV" & I).Value
FA_Plan = Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("FA" & I).Value
H_Plan = Workbooks("MPS_Template_File.xlsm").Sheets("MPS").Range("H" & I).Value
SolverReset
SolverOk SetCell:=FA_Plan, MaxMinVal:=1, ValueOf:=0, ByChange:=EV_Plan, Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$EV$5069", Relation:=1, FormulaText:="19.75"
SolverAdd CellRef:="$EV$5069", Relation:=3, FormulaText:="0"
SolverAdd CellRef:="$H$5069", Relation:=1, FormulaText:="105"
SolverAdd CellRef:="$H$5069", Relation:=3, FormulaText:="0"
SolverOk SetCell:=CInt(FA_Plan), MaxMinVal:=1, ValueOf:=0, ByChange:="$EV$5069", Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$FA$5069", MaxMinVal:=1, ValueOf:=0, ByChange:="$EV$5069", Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
End If
End If
Next I
Thử thay bằng Range("EV" & I).address hoặc "EV" & I
 
Upvote 0
Web KT
Back
Top Bottom