Найти все комбинации из нескольких столбцов, которые в сумме дают точное значение - PullRequest
0 голосов
/ 25 января 2019

У меня есть четыре столбца

enter image description here

Я хочу найти все комбинации чисел из каждого столбца, которые в сумме дают точное значение.Есть ли сценарий VBA, который может помочь мне в достижении этой цели?

Я ищу такой вывод:

Скажем, я хочу, чтобы значения добавлялись до 2721, тогда код долженвозвращать комбинацию как (1,3,6,7), то есть соответствующую строку каждого столбца и так далее, пока не будут найдены все такие комбинации.Если он не может найти точную сумму, найдите ближайшую сумму к этому значению.

1 Ответ

0 голосов
/ 25 января 2019

Это легко сделать в VBA, используя метод ReSize, функцию Sum, циклы и условные операторы.Ниже приведен пример с примерами данных:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...