我有四列
我想从每一列中找到所有数字的组合,这些组合加起来就是一个确切的值。有VBA脚本可以帮助我实现这一目标吗?
我正在寻找类似的输出
假设我希望这些值加起来为2721,然后代码应将组合返回为(1、3、6、7),即每列的对应行,依此类推,直到找到所有此类组合为止。如果找不到确切的总和,则找到与该值最接近的总和。
答案 0 :(得分:0)
可以使用ReSize方法,Sum函数,循环和条件语句在VBA中轻松完成此操作。以下是示例数据,例如:
第1步:编写与此类似的VBA宏。
Option Explicit
Function Check_Combination_Sum(ByVal lngSum As Long) As String
Dim rng As Range
Dim rngSource As Range
Set rngSource = Range("A2:A16")
For Each rng In rngSource.Cells
If WorksheetFunction.Sum(rng.Resize(1, 4)) = lngSum Then
rng.Resize(1, 4).Interior.Color = RGB(200, 255, 220)
Check_Combination_Sum = rng.Row & "," & Check_Combination_Sum
End If
Next
If Len(Check_Combination_Sum) > 1 Then
Check_Combination_Sum = Left(Check_Combination_Sum, Len(Check_Combination_Sum) - 1)
End If
End Function
Sub Check_Data()
MsgBox Check_Combination_Sum(197)
End Sub
第2步:上面的代码将突出显示包含总和为给定数据的行,并弹出行号。修改代码以适合您的要求。