我是一家定制金属制造公司的项目经理。当我计算出我们需要的结构油管、管道、角度等时,下面是我怎么做的:
我很希望能在excel上做到这一点。我试过想办法,但没有结果。
基本上,我需要什么样的公式才能做到这一点?基本上,这样我就可以输入零件的长度和数量以及棍子的长度,并计算所需的棒数。
注:它绝对不会工作,只要把所有的长度相加,除以棍子的长度。它必须递归(这是正确的词吗?)从棍子长度减去零件长度。
发布于 2017-01-31 19:18:09
我想过你的问题,我喜欢这个任务,所以我决定写一个快速的宏来帮助你解决你的问题。以下宏的输入应如下所示:

宏的代码如下所示:
Sub CalcPipe()
Dim StartPipeLng As Long, LastLng As Long, TotalLng As Long, PipeName As Long
StartPipeLng = Cells(2, 4).Value ' Picks start value from cell D2
LastLng = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row 'Find last row of loop
TotalLng = Application.WorksheetFunction.SumProduct(Range("A2:A" & LastLng), Range("B2:B" & LastLng))
TotalLng = Application.WorksheetFunction.RoundUp(TotalLng / StartPipeLng, 0)
Cells(5, 4).Value = TotalLng 'Outputs the number of pipes in cell D5
PipeName = 1
For y = 6 To TotalLng + 5
Cells(1, y).Value = "Pipe " & PipeName
PipeName = PipeName + 1
StartPipeLng = Cells(2, 4).Value
For x = 2 To LastLng
If StartPipeLng - Cells(x, 1).Value >= 0 And Cells(x, 2).Value <> Cells(x, 3).Value Then
StartPipeLng = StartPipeLng - Cells(x, 1).Value
Cells(x, 3).Value = Cells(x, 3).Value + 1
Cells(x, y).Value = Cells(x, y).Value + 1
x = x - 1
End If
Next x
Next y
Columns(3).Clear
End Sub运行宏后的输出如下所示:

请告诉我宏是否适用于您。请注意,堆栈溢出不是一种编码服务,我为您一次性编写了这篇文章。
https://stackoverflow.com/questions/41964352
复制相似问题