如何在Excel中找出和值处于120-160区间的所有数字组合?
Excel查找和值在120-160区间的数字组合方法
针对你需要从A列数字(14、80、27、16、85、22、79、26)中找出所有和值介于120到160之间的组合的需求,Kutools仅支持匹配固定和值,这里提供两种可行方案:
方法一:VBA宏脚本(直接生成结果)
- 打开目标Excel文件,按下
Alt + F11打开VBA编辑器 - 右键点击左侧工程窗口中的当前工作簿名称,选择「插入」→「模块」
- 将以下代码粘贴到模块窗口中,运行即可在C列开始的位置输出符合条件的组合及对应和值:
Sub FindSumRangeCombinations() Dim rng As Range, cell As Range Dim arr() As Variant, resultArr() As String Dim i As Long, j As Long, sumVal As Double Dim comboStr As String, count As Long Dim minSum As Double, maxSum As Double ' 设置参数:和值区间、数据列 minSum = 120 maxSum = 160 Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A8") ' 替换为你的数据范围 ' 把数据存入数组 ReDim arr(1 To rng.Count) For i = 1 To rng.Count arr(i) = rng(i).Value Next i count = 0 ' 遍历所有非空组合(从1到2^n - 1) For i = 1 To 2 ^ UBound(arr) - 1 comboStr = "" sumVal = 0 For j = 1 To UBound(arr) If i And 2 ^ (j - 1) Then comboStr = comboStr & arr(j) & ", " sumVal = sumVal + arr(j) End If Next j ' 判断和值是否在区间内 If sumVal >= minSum And sumVal <= maxSum Then count = count + 1 ReDim Preserve resultArr(1 To count) resultArr(count) = Left(comboStr, Len(comboStr) - 2) & " | 和值: " & sumVal End If Next i ' 输出结果到C列 If count > 0 Then ThisWorkbook.Sheets("Sheet1").Range("C1").Resize(count, 1).Value = Application.Transpose(resultArr) Else MsgBox "未找到符合条件的组合" End If End Sub
- 点击VBA编辑器中的「运行」按钮(绿色三角),或者按下
F5执行脚本,结果会自动输出到Sheet1的C列。
方法二:手动辅助筛选(适合数据量极小的情况)
如果你的数字数量很少(比如示例中的8个),可以先列出所有可能的2个、3个...n个数字的组合,用SUM函数计算和值,再用筛选功能找出和值在120-160之间的行。不过这种方法仅适合数字个数少于10个的场景,否则组合量会爆炸。
注意事项
- 如果你的数据范围不是A1:A8,记得修改代码中
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A8")这一行的范围 - 当数字个数超过15个时,组合数会超过3万,执行速度会变慢,此时建议缩小数据范围或优化代码
内容的提问来源于stack exchange,提问作者AN Đỗ
相关产品推荐
相关产品推荐

