Добрый день, прошу помощи в решении задачи. Есть 2 листа, реально ли их как-то сравнить по сумме в заданном диапазоне? Т.е. нужно из одного листа выбрать к примеру 30 строк которые в сумме составят 300 000 и во втором листе подобрать строки которые в сумме составят точное значение 300 000. Выделит их к примеру цветом или как то... И второй вариант максимально близкое значение к выбранному в первом. Подбирать сумму по желтому столбцу. Делается это, чтобы заменить строки с одного листа в другой сохраняя при этом общую сумму и желательно кол-во строк.
Добрый день, прошу помощи в решении задачи. Есть 2 листа, реально ли их как-то сравнить по сумме в заданном диапазоне? Т.е. нужно из одного листа выбрать к примеру 30 строк которые в сумме составят 300 000 и во втором листе подобрать строки которые в сумме составят точное значение 300 000. Выделит их к примеру цветом или как то... И второй вариант максимально близкое значение к выбранному в первом. Подбирать сумму по желтому столбцу. Делается это, чтобы заменить строки с одного листа в другой сохраняя при этом общую сумму и желательно кол-во строк.anabioss13
Function Row_Numbers_Sum( _ rnge As Range, _ dSum As Double) _ As Collection ' вернуть коллекцию номеров строк слагаемых суммы ' однопроходный, безхитростный
Dim _ ceLL As Range, _ coll As New Collection, _ dAcc As Double
For Each ceLL In rnge
If dAcc + ceLL.Value = dSum Then coll.Add ceLL.Row Exit For End If
If dAcc + ceLL.Value < dSum Then dAcc = dAcc + ceLL.Value coll.Add ceLL.Row End If
Next
Set Row_Numbers_Sum = coll
End Function
[/vba]
Привет! Начинаем варить кашу из топора:
[vba]
Код
Function Row_Numbers_Sum( _ rnge As Range, _ dSum As Double) _ As Collection ' вернуть коллекцию номеров строк слагаемых суммы ' однопроходный, безхитростный
Dim _ ceLL As Range, _ coll As New Collection, _ dAcc As Double
For Each ceLL In rnge
If dAcc + ceLL.Value = dSum Then coll.Add ceLL.Row Exit For End If
If dAcc + ceLL.Value < dSum Then dAcc = dAcc + ceLL.Value coll.Add ceLL.Row End If