从多个列中查找所有合计为精确值的组合

时间:2019-01-25 04:14:37

标签: excel vba excel-formula

我有四列

enter image description here

我想从每一列中找到所有数字的组合,这些组合加起来就是一个确切的值。有VBA脚本可以帮助我实现这一目标吗?

我正在寻找类似的输出

假设我希望这些值加起来为2721,然后代码应将组合返回为(1、3、6、7),即每列的对应行,依此类推,直到找到所有此类组合为止。如果找不到确切的总和,则找到与该值最接近的总和。

1 个答案:

答案 0 :(得分:0)

可以使用ReSize方法,Sum函数,循环和条件语句在VBA中轻松完成此操作。以下是示例数据,例如:

Sample Data

第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步:上面的代码将突出显示包含总和为给定数据的行,并弹出行号。修改代码以适合您的要求。

Final Output