2017-07-27 44 views
1

拉非零值,我有此表中的食品項目的Excel從它們的營養價值的菜單。然後,我得到了另一張表,每行中的每個項目以及下一行中每個項目的消耗數量。然後,我使用Excel中的解算器工具來優化膳食選擇,同時對膳食的卡路里量設置限制以及對我使用的營養價值的某些限制。從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