這題很有趣BOM表硬要靠Excel函數解的話應該很硬吧? (通常應該是VBA)我只想到靠樞紐展出所有組合,然後靠sumproduct算出所有組合的零件數再用判斷式去呈現..不過這樣子做應該太笨了.. 應該有更好的方法, 標記等解答.
神奇珍妮特 wrote:如何用物料現有庫存來計算A/B/C 三個產品,可產出數量的所有組合?...(恕刪) 這屬於管理數學中的線性規劃為了回答,我還翻出以前的課本,稍微複習一下基本上呢,這種問題是沒有在求“所有組合”的您會不會搞錯了??都是求可生產最大數量、最佳解如果有加上售價就是求最大利潤更複雜一點的還會加上折舊、運輸、機器時間…等等再加上人因工程(人的反應、手拿零件的時間、身體轉動的角度…之類的)看起來就像天書一樣,當初我可是學的很痛苦只求最大產量(利潤)的話,excel 內建功能就可以辦到一、先建立公式e2=SUMPRODUCT(B2:D2,B$5:D$5)e3=SUMPRODUCT(B3:D3,B$5:D$5)e4=SUMPRODUCT(B4:D4,B$5:D$5)b7=sum(B5:D5)二、開啟“規劃求解”(怎麼開請google)照圖片中的規則輸入=>按求解(這種簡單的問題,求解方法隨便選一個都可以解)產量那行維持空白就可以,求解後會自動填入三、如果要限制產品數量,例如:c產品一定要產出3個或以上新增一個規則就可以了另外,要注意的是,最佳解不是唯一的答案,只是所有可能解之一
如果真的要看所有組合,這裡補上列出所有排列組合的vba方式為了方便說明,使用公式+vba,當然您要把公式寫入vba也可以一、公式部份,先算出每項產品的最大產量只要把每項庫存原料/使用原料,再取最小值(需為整數,因為產品是沒有1.1 or 1.6個)就是單項產品最大產量,(圖片中的 a6:d10)二、程式部份,使用每項產品的最大產量當作要跑的迴圈次數當3個條件都成立時,就是可能的產量組合方式,在f、g、h欄列出(3個條件就是SUMPRODUCT那3個公式)'============================================Sub test()Columns("F:H").ClearContentsRange("f1:h1") = Array("a", "b", "c")max_a = Range("b10")max_b = Range("c10")max_c = Range("d10")r = 1For i = 0 To max_aFor j = 0 To max_bFor k = 0 To max_cp1 = i * Range("b2") + j * Range("c2") + k * Range("d2")p2 = i * Range("b3") + j * Range("c3") + k * Range("d3")p3 = i * Range("b4") + j * Range("c4") + k * Range("d4")If p1 <= Range("a2") And p2 <= Range("a3") And p3 <= Range("a4") Thenr = r + 1Cells(r, 6) = iCells(r, 7) = jCells(r, 8) = kEnd IfNext kNext jNext iMsgBox "所有可能組合" & r - 1 & "種", vbOKOnly, "report"End Sub'============================================