2016-11-27 15 views
-1

私は300行のデータを持つExcelファイルを持っており、各行にソルバーを使用する必要があります。列Hの各セルには、セルH9を変更することによってゼロに等しくなければならない式があります。マクロを使用したExcelソルバー

ソルバー:

  • 標的細胞:K9( "0" に等しくなければならない)
  • セルを変更することにより:H9
  • 出力セル:H9

ソルバーが行から動作するはず9から309まで。

私はインターネット上で同様の問題がたくさんありますが、プログラミングのコードを変更できません私の場合にe。

*Sub Macro2() 
' Macro2 Macro 
' 
Sneltoets: Ctrl+v 
' 
Dim c As Range 
Dim nRows As Integral 
nRows = 300 
For Each c In Range("$H$9:$H$309") 
     SolverOk SetCell:=c.Offset(0, 3), MaxMinVal:=3, ValueOf:=0, ByChange:=c.Address, _ 
      Engine:=1, EngineDesc:=" GRG Nonlinear " 
     SolverSolve userfinish:=True 
     SolverFinish keepfinal:=1 
Next 
End Sub* 

初めてExcelで何かをプログラムする必要があります。

誰かが私を助けてくれたら、本当にありがとう!

+0

これまでのコードを表示することはできますか?また、「K9を0にする」という意味は? – NavkarJ

+0

トピックを編集しました。 – Jelle

+0

@Jelle - 答えとして役立つと思われるコードを投稿してください。そのようなものとしてマークすると、回答がより明確に表示されます。 –

答えて

0

私は以下のスクリプトを試してみました。あなたはあなたが望むものを理解することに基づいて、あなたが必要とするものに非常に近いはずです。

Sub Macro2() 

Dim c As Range 
Dim nRows As Integer 
Dim i As Integer 
nRows = 300 

i = 9 
For Each c In Range("$H$9:$H$309") 

    c.Select 
    SolverOk SetCell:=Range("H" & i), MaxMinVal:=3, ValueOf:=0, ByChange:=Range("K" & i), Engine:=1 _ 
     , EngineDesc:="GRG Nonlinear" 
    SolverSolve True 
    i = i + 1 

Next c 
End Sub 
+0

私はこのコードを数回使って、ほとんどの場合に働きました。 質問があります。 列Kのセル内のすべての解が常に列Kの前のセルの解よりも大きいことを確認するコードを追加することは可能ですか(例:K9> K8、....、K309> K308) ? ありがとうございます。 – Jelle

0

私はこのコードを発見し、それが働いた:

Sub example() 

Dim oRng As Range 
Dim c  As Range 

Set oRng = Range("K9:K309") 
For Each c In oRng 
    c.GoalSeek _ 
     Goal:=0, _ 
     ChangingCell:=c.Offset(0, -3) 
Next c 

End Sub 

をより良い仕事をしたqueens_livingによって書かれたコード。

ありがとうございます!

関連する問題