You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求解指定总高度的托盘高度组合及Excel实现方法咨询

仓储托盘堆叠组合Excel求解方案

完全可以通过Excel实现所有符合要求的托盘组合求解,根据你需要的结果范围不同,有两种可行实现路径:

方案1:使用Excel自带Solver规划求解(适合快速获取单个/指定数量解)

操作步骤如下:

  • 第一步:搭建基础计算表,A1:A6单元格依次填入6种托盘高度105、100、84、78、72、66,B1:B6留空作为对应托盘的数量变量(初始值填0,要求为非负整数),C1单元格输入公式=A1*B1下拉填充到C6,C7单元格输入公式=SUM(C1:C6)作为总高统计单元格。
  • 第二步:启用Solver工具:如果顶部「数据」选项卡没有找到「规划求解」按钮,先进入「文件-选项-加载项」,底部「管理」下拉选「Excel加载项」,勾选「规划求解加载项」确认后即可显示。
  • 第三步:配置Solver参数:
    • 目标单元格选择C7,目标值设置为固定值439
    • 可变单元格选择B1:B6
    • 添加两条约束:B1:B6 >= 0、B1:B6 为整数
    • 求解方法选择「单纯线性规划」
  • 第四步:点击「求解」即可得到一组可行解,需要多组解可以在弹出的结果窗口选择「保存方案」,每次求解后手动调整已有解的数量约束重新运行即可。

注意:默认Solver单次运行仅返回1组可行解,若需要导出全量所有符合条件的组合,更推荐使用方案2。

方案2:VBA脚本遍历全量组合(适合一次性导出所有可行解)

6种托盘的最大可能数量上限很低,嵌套循环遍历的运行效率极高,操作步骤如下:

  • 第一步:按Alt+F11打开VBA编辑器,右键点击当前工作簿选择「插入-模块」,粘贴以下代码:
Sub 查找所有托盘组合()
    Dim h(1 To 6) As Integer, cnt(1 To 6) As Integer
    Dim total As Integer, nextRow As Integer
    ' 赋值6种托盘高度
    h(1) = 105: h(2) = 100: h(3) = 84
    h(4) = 78: h(5) = 72: h(6) = 66
    nextRow = 2 ' 结果从第2行开始写入
    ' 遍历所有可能的数量组合
    For cnt(1) = 0 To 439 \ h(1)
        For cnt(2) = 0 To (439 - cnt(1) * h(1)) \ h(2)
            For cnt(3) = 0 To (439 - cnt(1) * h(1) - cnt(2) * h(2)) \ h(3)
                For cnt(4) = 0 To (439 - cnt(1) * h(1) - cnt(2) * h(2) - cnt(3) * h(3)) \ h(4)
                    For cnt(5) = 0 To (439 - cnt(1) * h(1) - cnt(2) * h(2) - cnt(3) * h(3) - cnt(4) * h(4)) \ h(5)
                        total = cnt(1) * h(1) + cnt(2) * h(2) + cnt(3) * h(3) + cnt(4) * h(4) + cnt(5) * h(5)
                        ' 直接计算最后一种托盘的数量是否符合要求
                        If (439 - total) >= 0 And (439 - total) Mod h(6) = 0 Then
                            cnt(6) = (439 - total) / h(6)
                            ' 写入结果到表格
                            Cells(nextRow, 1) = cnt(1): Cells(nextRow, 2) = cnt(2)
                            Cells(nextRow, 3) = cnt(3): Cells(nextRow, 4) = cnt(4)
                            Cells(nextRow, 5) = cnt(5): Cells(nextRow, 6) = cnt(6)
                            nextRow = nextRow + 1
                        End If
                    Next cnt(5)
                Next cnt(4)
            Next cnt(3)
        Next cnt(2)
    Next cnt(1)
    MsgBox "共找到" & nextRow - 2 & "个可行组合"
End Sub
  • 第二步:返回Excel界面,第一行A1:F1依次填入6种托盘规格作为表头,按Alt+F8选择刚才保存的宏点击「执行」,即可在表格中得到所有符合要求的组合。

内容的提问来源于stack exchange,提问作者Lasergun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:24:06