Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2011, 14:17   #1
_Жека
Новичок
Джуниор
 
Регистрация: 22.09.2011
Сообщений: 2
По умолчанию необходимо суммирование изменяемого диапазона

Всем день добрый.

Долго думал, решил спросить совета на форуме.
Дело в чем: мне необходимо посчитать значение каждой ячейки в неком заданном диапазоне. Вопрос в том, что при смещении вниз по строкам мне необходимо считать сумму нескольких верхних значений, которые постоянно увеличиваются. Для примера, это примерно такой формулой может выражаться (где i - rows.count):
Е(сумма, от i до n) Range(Cells(iRow - i, iColumn - i), Cells(iRow - i, iColumn + i)), т.е., например, для n-ой строки должно быть такое выражение:
Range(Cells(iRow - 1, iColumn - 1), Cells(iRow - 1, iColumn + 1))+Range(Cells(iRow - 2, iColumn - 2), Cells(iRow - 2, iColumn + 2))+...+Range(Cells(iRow - n, iColumn - n), Cells(iRow - n, iColumn + n)).
Я никак понять не могу, как в VBA эту функцию реализовать.
ПС может, непонятно объяснил, физический смысл в следующем: мне нужно посчитать сумму "воронки", где нижняя точка перевернутого треугольника - это ячейка, в которой должна считаться сумма всех ячеек, входящих в воронку.
ППС пример не выкладываю, или не знаю, как сделать... написал в VBE следующее (там, где range, там и необходимо, чтобы считало сумму в увеличивающихся рядах):
Sub count()
Dim iRow As Long, iColumn As Long, i As Long
For iRow = 1 To 20
For iColumn = 1 To 40
For i = 0 To iRow - 1
Worksheets("книга1").Cells(iRow + 22, iColumn).Value = _
Range(Cells(iRow - i, iColumn - i), Cells(iRow - i, iColumn + i))
Next i
Next iColumn
Next iRow
End Sub
ПППС приложил файл, там кратко нарисовал, как должен макрос работать.
Если кто может, объясните хотя бы в целом, как это можно реализовать.
Заранее спасибо.
Вложения
Тип файла: rar Книга1.rar (3.6 Кб, 11 просмотров)
_Жека вне форума Ответить с цитированием
Старый 22.09.2011, 15:38   #2
_Жека
Новичок
Джуниор
 
Регистрация: 22.09.2011
Сообщений: 2
По умолчанию (((

хм... замороченно объяснил? или слишком много хочу?))
_Жека вне форума Ответить с цитированием
Старый 22.09.2011, 17:50   #3
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Пробуем:
Код:
Sub ertert()    'http://www.programmersforum.ru/showthread.php?t=166266
Dim x, y&(), s#, ubx&
Dim i As Long, j As Long, u As Long, v As Long, t&, q&
x = [a1:g4].Value: ReDim y(1 To UBound(x, 1), 1 To UBound(x, 2))

For i = 1 To UBound(x, 1)
    ubx = UBound(x, 2) - i + 1
    For j = i To ubx
        s = x(i, j)
        For u = 1 To i - 1
            t = j - i + u: q = j + i - u
            For v = t To q
                s = s + x(u, v)
            Next v
        Next u
        y(i, j) = s
    Next j
Next i

[a6:g9].Value = y
End Sub
PS А в чем практическое применение?
nilem вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование диапазона по условиям состоящим в свою очередь из двух и более признаков alexsampler Microsoft Office Excel 5 23.08.2011 01:52
Суммирование с неизвестным окончанием диапазона Stalin37 Microsoft Office Excel 7 21.07.2010 12:00
Суммирование ячеек с заданного диапазона листов skivpokemon Microsoft Office Excel 18 05.06.2010 01:14
Суммирование НЕ диапазона, а конкретный ячеейк через VBA Артур Иваныч Microsoft Office Excel 8 23.11.2009 11:49
Вызов изменяемого exception в InterBase soleil@mmc SQL, базы данных 8 09.04.2009 13:50