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

Excel如何查找col2和为10且项数为3的col1所有求和组合

实现方案

这个需求逻辑非常明确,不需要复杂算法,核心是枚举所有3个元素的无重复组合,筛选出col2之和为10的组即可。针对你给的7行样例数据,总共只有35种3元素组合,计算量可以忽略。

方案1:数据库端SQL实现

如果数据存在数据库里,直接用3表自连接即可,通过col2的大小比较做去重,避免同一组合被重复统计(比如A+B+C和B+A+C视为同一组),代码如下:

SELECT
  t1.col1 col1_item1,
  t2.col1 col1_item2,
  t3.col1 col1_item3,
  t1.col1 + t2.col1 + t3.col1 col1_total
FROM your_table t1
INNER JOIN your_table t2 ON t1.col2 < t2.col2
INNER JOIN your_table t3 ON t2.col2 < t3.col2
WHERE t1.col2 + t2.col2 + t3.col2 = 10;

针对你提供的样例数据,执行后返回2组符合要求的结果:

  • 对应col2值为1、4、5,col1值为134、21、982,col1求和结果为1137
  • 对应col2值为2、3、5,col1值为432、222、982,col1求和结果为1636

如果你的表存在col2值重复的行,把连接条件里的col2比较换成表的唯一主键比较即可,避免漏算同col2值的不同行组合。

方案2:本地Python实现

如果是本地处理数据,直接用标准库的组合生成工具遍历即可,代码可直接运行:

from itertools import combinations

# 替换成你的实际数据
raw_data = [(134,1), (432,2), (222,3), (21,4), (982,5), (1352,8), (111,9)]

valid_groups = []
for group in combinations(raw_data, 3):
    col2_sum = sum(col2 for col1, col2 in group)
    if col2_sum == 10:
        col1_sum = sum(col1 for col1, col2 in group)
        valid_groups.append({
            "col1_items": [col1 for col1, col2 in group],
            "col2_items": [col2 for col1, col2 in group],
            "col1_sum": col1_sum
        })

# 打印结果
for g in valid_groups:
    print(g)

补充说明

如果后续你的数据量涨到千行级别,这种枚举方案依然可用:C(1000,3)约1.6亿次计算,普通设备也能在几秒内出结果。如果数据量到万行以上,再考虑剪枝优化即可,当前场景下枚举是开发成本最低、最不容易出逻辑bug的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 22:39:24