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

Excel中最优计算有效物品组合集最大数量的公式求解

Excel中最优计算有效物品组合集最大数量的公式求解

嘿,我来帮你搞定这个Excel里的最优集合计数问题!你的需求其实就是要算出最多能凑出多少个符合要求的集合——每个集合得用3种不同的物品各1个,用掉的物品数量要相应减少,最终要得到最理想的最大数量对吧?

先给你理清楚核心逻辑:要最大化集合数X,需要满足两个关键约束:

  1. 所有物品的总数量除以3取整(毕竟每个集合要消耗3个物品),这是理论上限
  2. 每个物品最多只能在X个集合里各出现1次(因为一个集合里不能重复用同一个物品),所以把每个物品的数量和X取最小值后求和,这个总和必须至少是3X(保证能凑出X个集合的物品需求)

下面给你三种不同的实现方法,适配不同版本的Excel:

方法一:用规划求解(直观易操作,适合所有版本)

规划求解是Excel自带的线性规划工具,能直接帮你算出最优解,步骤如下:

  1. 把你的物品数量放在一行,比如Test1的A2:F2,Test2的A3:F3
  2. 找一个空白单元格(比如G2),用来存放我们要求的最大集合数X
  3. 再找6个空白单元格(比如H2:M2),对应每个物品在集合中被使用的次数
  4. 打开「数据」选项卡的「规划求解」(如果找不到,先在「选项-加载项」里启用规划求解加载项)
  5. 设置参数:
    • 目标单元格:选G2,目标选「最大值」
    • 可变单元格:选H2:M2(每个物品的使用次数)
    • 添加约束:
      • 每个使用次数单元格 <= 对应物品的数量(比如H2<=A2,I2<=B2…)
      • 每个使用次数单元格 <= G2(每个物品最多在X个集合里出现一次)
      • SUM(H2:M2) = 3*G2(总消耗物品数是3倍的集合数)
  6. 点击「求解」,G2里就会出现最优的集合数了

比如Test1会得到5,Test2得到2,完全符合你的例子。

方法二:用Excel 365/2021的LET函数公式(简洁高效)

如果你用的是新版Excel,支持LET、SEQUENCE这类函数,可以直接用下面的公式(假设物品数量在A2:F2):

=LET(
    qty, A2:F2,
    total, SUM(qty),
    upper1, FLOOR(total/3),
    x_vals, SEQUENCE(upper1),
    valid_x, FILTER(x_vals, SUM(MIN(qty, x_vals)) >= 3*x_vals),
    MAX(valid_x)
)

公式解释:

  • qty:引用你的物品数量区域
  • total:计算所有物品的总数量
  • upper1:总数量除以3取整,得到X的理论上限
  • x_vals:生成1到upper1的所有候选X值
  • valid_x:筛选出满足「各物品可用次数求和≥3X」的候选值
  • MAX(valid_x):取最大的有效X,就是最优解

方法三:旧版Excel的数组公式(兼容性强)

如果你的Excel版本比较旧,不支持LET函数,可以用下面的数组公式(同样假设数量在A2:F2),输入时要按Ctrl+Shift+Enter完成输入:

=MAX(IF(SUM(IF(A2:F2>ROW(INDIRECT("1:"&FLOOR(SUM(A2:F2)/3))),ROW(INDIRECT("1:"&FLOOR(SUM(A2:F2)/3))),A2:F2))>=3*ROW(INDIRECT("1:"&FLOOR(SUM(A2:F2)/3))),ROW(INDIRECT("1:"&FLOOR(SUM(A2:F2)/3))),0))

这个公式的逻辑和新版的一致,只是用旧函数实现了候选值的遍历和筛选。

备注:内容来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 13:49:32