2017-07-27 6 views
1

私はこのテーブルを、栄養価の高いメニューからの食料品に優れています。次に、それぞれの項目が1つの行にあり、各項目の消費量が下の行にある別の表が表示されます。私はソルバーツールを使ってExcelで食事の選択肢を最適化しました。食事のカロリーや設定された栄養価の制限が設定されていました。0以外の値をExcelから引き出す

ソルバーツールを使用してシンプレックスアルゴリズムを実行すると、消費された量の変化のテーブル内の値が、制約が与えられたときに何を食べるべきかを反映します。

私は制約を変更して別の結果を得ることができるように柔軟にしたいと思っていますが、私が望むのは選択肢を表示する簡単な方法です。現在私が持っているのは、別のタブのテーブルとテーブルとのインデックスマッチと、その後、フィルタを適用して消費量が「0」のすべてのアイテムを取り除く値ですが、これはソルバを実行するたびに実行する必要があります。

いつでもフィルタをやり直さなくても、ゼロ以外の値を引き出し、これらの項目が表示される方法はありますか?

答えて

1

私はスプレッドシートテーブルで何かを検索し、結果を同じページに投稿する(簡単に別のシートに投稿するように変更する)ための単純なルーチンです。これがほしいと思っています。 (粗であるが効果的)

Private Sub CommandButton3_Click() 
    'FIND A VALUE IN THE LIST AND POST RESULTS 

Dim myName, myNumber, myComp 

    'Clear the results area 
With Worksheets("SheetName").Range("H2:J30").ClearContents 
End With 
x = 2 'The row to start posting results to 
y = 0 

    'This is the range to search 
With Worksheets("SheetName").Range("A1:D300") 

    Set found = .Find(What:=y, LookIn:=xlValues, LookAt:=xlWhole) 
     If Not found Is Nothing Then 
     firstAddress = found.Address 
     Do 

     Set ws = Sheets("SheetName") 
     myName = ws.Range("A" & found.Row).Value 'Value in column A 
     myNumber = ws.Range("B" & found.Row).Value 'Value in column B 
     myComp = ws.Range("C" & found.Row).Value 'Value in column C 

       'I use a MsgBox at first for testing, then comment it out when I know it's working 
       'MsgBox myName & " " & myNumber & " " & myComp 

       'Post the results to the desired area 
       ws.Range("H" & x).Value = myName 
       ws.Range("I" & x).Value = myNumber 
       ws.Range("J" & x).Value = myComp 
      x = x + 1 
     Set found = .FindNext(found) 
     If found Is Nothing Then 
      GoTo DoneFinding 
     End If 
     Loop While Not found Is Nothing And found.Address <> firstAddress 
    End If 
DoneFinding: 
End With 
Range("A2").Select 
End Sub 
関連する問題