EXCEL解决用料计算问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 13:52:20
原料有3种规格分别是6米、7米、和9米。

下料有固定长度和根数,怎样才能合理搭配用料而不浪费呢?

有那位懂的高手朋友请帮个忙吧!

小弟初学VBA,不胜感谢!
问题的目的是得到如下材料:
2365MM 24根

650 MM 32根

3122MM 8根

1220MM 12根

原材料有6M、7M、9M 求合理搭配、废料最少。(最好可以给出具体原材料及下料关系。)本人这里有一高人制作的相似表格,但是只可以计算一种长度原料。有兴趣可以联系。本人邮箱superhanzo@163.com

"下料有固定长度和根数,怎样才能合理搭配用料而不浪费呢?"
这句话看不懂, 能不能举个例子?是不是比方你想知道10根棒子要凑到50米应该每种棒子拿几根浪费的米数才最小?这样的话是数学题不是编程题了。不过数字如果不是超巨大的话用循环也行。

我觉得既规定长度又规定根数会出一些问题,比方说要100米,但是只许用10根棍子,就算都用9米也拼不起来。如果不规定根数,只规定拼满一定长度,那可以用下面这段code

Function savematerial(totallength)
Dim i As Integer, j As Integer, k As Integer, intNearestLength As Integer
intNearestLength = totallength
Do While intNearestLength < 100000
For i = 0 To totallength \ 6
For j = 0 To totallength \ 7
For k = 0 To totalllength \ 9
If i * 6 + j * 7 + k * 9 = intNearestLength Then
savematerial = "需要6米长材料" & i & "根,7米长材料" & j & "根,9米长材料" & k & "根"
Exit Function
End If
Next k
Next j
Next i
intNearestLength = intNearestLength + 1
Loop
End Function

相当于从给定的长度开始,如果给定50,就先找有没有i,j,k三个数使得6i+7j+9k=50的,找不到就往上面爬1,找有没有可以拼成51的,到找到为止。比方运行savematerial(50)的结果是