Доброго времени суток!
Вопрос, собственно, описан в теме :)
Есть массив чисел, например, {90 плюс-минус 10%}, т.е. 81,82,..98,99
Есть второй массив, в нем числа от 10 до 300 (случайные), требуется просуммировать
во втором массиве числа кратные числам первого массива.
Через доп. столбец и конструкцию сумм(суммесли) не желательно, т.к. первый массив может быть динамическим (не 10, а 20%, не 90, а, например, 150 и т.д.)
пробовал через VBA. Получилось вот что:
Public Function сумм_кратн_такт(addr As Range, takt As Integer, otkl As Integer) As Variant
Dim cell As Range
tMinq = takt - takt / 100 * otkl
tMaxq = takt + takt / 100 * otkl
tt = tMinq
aa = 0
Do While tt <= tMaxq
For Each cell In Range(addr)
cv = cell.Value
If cv Mod tt = 0 Then aa = aa + cv
Next
tt = tt + 1
Loop
сумм_кратн_такт = aa
End Function
Беда, похоже в for...each, что-то я тут "накосячил".
Есть мысли, в чем ошибка?
Вопрос, собственно, описан в теме :)
Есть массив чисел, например, {90 плюс-минус 10%}, т.е. 81,82,..98,99
Есть второй массив, в нем числа от 10 до 300 (случайные), требуется просуммировать
во втором массиве числа кратные числам первого массива.
Через доп. столбец и конструкцию сумм(суммесли) не желательно, т.к. первый массив может быть динамическим (не 10, а 20%, не 90, а, например, 150 и т.д.)
пробовал через VBA. Получилось вот что:
Public Function сумм_кратн_такт(addr As Range, takt As Integer, otkl As Integer) As Variant
Dim cell As Range
tMinq = takt - takt / 100 * otkl
tMaxq = takt + takt / 100 * otkl
tt = tMinq
aa = 0
Do While tt <= tMaxq
For Each cell In Range(addr)
cv = cell.Value
If cv Mod tt = 0 Then aa = aa + cv
Next
tt = tt + 1
Loop
сумм_кратн_такт = aa
End Function
Беда, похоже в for...each, что-то я тут "накосячил".
Есть мысли, в чем ошибка?