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

Google Sheets:如何在有序数组中选取每列元素求最小总和

在Google Sheets中求解行列唯一选元素的最小总和

根据你的需求(每行、每列各选且仅选一个元素,求选中元素的最小总和,即经典指派问题),以下是两种可行的实现方法:

方法1:使用规划求解(Solver)工具

这是最直观且适用于绝大多数场景的方法:

  • 准备辅助区域:在数据旁创建一个与原数组尺寸相同的空白区域(例如原数据为A1:J10,辅助区用K1:T10),用于标记选中状态(选中填1,未选中填0)。
  • 启用Solver:点击菜单栏「扩展程序」→「添加-ons」,搜索并安装「Solver」插件,安装完成后从「扩展程序」中打开它。
  • 配置求解参数:
    1. 目标单元格:输入一个空白单元格,写入公式=SUMPRODUCT(A1:J10, K1:T10),用于计算选中元素的总和。
    2. 目标类型:选择「最小值」。
    3. 可变单元格:选中刚才创建的辅助区域(K1:T10)。
    4. 添加约束:
      • 辅助区域的单元格必须是二进制值(K1:T10 = binary),即只能为0或1。
      • 每行的辅助单元格之和为1(例如SUM(K1:T1)=1,下拉应用到所有行),确保每行仅选一个元素。
      • 每列的辅助单元格之和为1(例如SUM(K1:K10)=1,右拉应用到所有列),确保每列仅选一个元素。
  • 点击「求解」,Solver会自动算出最小总和,同时辅助区域会标记出选中的元素位置。

方法2:公式法(仅适用于小型数组)

如果数组规模很小(如5行5列以内),可以通过生成所有行列排列组合并计算总和的方式取最小值,但计算量会随数组规模呈阶乘增长,仅适合测试场景。例如:

=MIN(BYROW(PERMUTATIONA(SEQUENCE(10)),LAMBDA(p,SUM(INDEX(A1:J10,SEQUENCE(10),p)))))

注:PERMUTATIONA是Google Sheets的动态数组函数,需确保你的版本支持该函数。

补充:若无需限制行重复(仅每列选一个元素)

如果你的需求只是每列任选一个元素(可重复选同一行),直接求和每列的最小值即可,公式示例:

=SUMPRODUCT(BYCOL(A1:J10,LAMBDA(c,MIN(c))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:36:16