Всем день добрый. Долго думал, решил спросить совета на форуме. Дело в чем: мне необходимо посчитать значение каждой ячейки в неком заданном диапазоне. Вопрос в том, что при смещении вниз по строкам мне необходимо считать сумму нескольких верхних значений, которые постоянно увеличиваются. Для примера, это примерно такой формулой может выражаться (где 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 эту функцию реализовать. ПС может, непонятно объяснил, физический смысл в следующем: мне нужно посчитать сумму "воронки", где нижняя точка перевернутого треугольника - это ячейка, в которой должна считаться сумма всех ячеек, входящих в воронку.
Всем день добрый. Долго думал, решил спросить совета на форуме. Дело в чем: мне необходимо посчитать значение каждой ячейки в неком заданном диапазоне. Вопрос в том, что при смещении вниз по строкам мне необходимо считать сумму нескольких верхних значений, которые постоянно увеличиваются. Для примера, это примерно такой формулой может выражаться (где 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 эту функцию реализовать. ПС может, непонятно объяснил, физический смысл в следующем: мне нужно посчитать сумму "воронки", где нижняя точка перевернутого треугольника - это ячейка, в которой должна считаться сумма всех ячеек, входящих в воронку.Гость
icolumn - переменная для обозначения порядкового номера столбца. я тут дописал слегка вопрос... и пример корявый сделал, как должно работать, вроде должно помочь.
"... ППС пример не выкладываю, или не знаю, как сделать... написал в 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 ПППС приложил файл, там кратко нарисовал, как должен макрос работать. Если кто может, объясните хотя бы в целом, как это можно реализовать.
ПС я не пойму, а в статусе гостя файлы можно прикреплять? не могу понять как... ППС ну да, мне нужна арифметическая прогрессия. А как ее выразить, у Вас нет какого-нибудь примера?
icolumn - переменная для обозначения порядкового номера столбца. я тут дописал слегка вопрос... и пример корявый сделал, как должно работать, вроде должно помочь.
"... ППС пример не выкладываю, или не знаю, как сделать... написал в 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 ПППС приложил файл, там кратко нарисовал, как должен макрос работать. Если кто может, объясните хотя бы в целом, как это можно реализовать.
ПС я не пойму, а в статусе гостя файлы можно прикреплять? не могу понять как... ППС ну да, мне нужна арифметическая прогрессия. А как ее выразить, у Вас нет какого-нибудь примера?Гость
Описание выглядит довольно запутанным, но если это ариф. прогрессия x(N) = a + k * N то, как известно из шк. программы: S(N) = a * N + k * N * (N+1)
Описание выглядит довольно запутанным, но если это ариф. прогрессия x(N) = a + k * N то, как известно из шк. программы: S(N) = a * N + k * N * (N+1)Формуляр
я в интернете нашел, что Sn=(a1+an)/2*n, ну есть и чуть более продвинутая формула... но сути это не меняет. Если бы у меня в каждой ячейке увеличивающейся "воронки" было бы одинаковое значение, вопросов бы не было. Но так как они (значения) разные - это уже не арифметическая прогрессия в ее основном понимании. Я вот сюда еще вопрос вывесил с примером прикрепленным http://www.programmersforum.ru/showthread.php?t=166266 только там чего-то никто не отвечает... чему я даже не удивляюсь, сам думаю, насколько все вроде просто и в то же время непонятно((
я в интернете нашел, что Sn=(a1+an)/2*n, ну есть и чуть более продвинутая формула... но сути это не меняет. Если бы у меня в каждой ячейке увеличивающейся "воронки" было бы одинаковое значение, вопросов бы не было. Но так как они (значения) разные - это уже не арифметическая прогрессия в ее основном понимании. Я вот сюда еще вопрос вывесил с примером прикрепленным http://www.programmersforum.ru/showthread.php?t=166266 только там чего-то никто не отвечает... чему я даже не удивляюсь, сам думаю, насколько все вроде просто и в то же время непонятно((Гость
видимо, тут надо еще добавить, что число аргументов не ограничено 30, да по идее вообще не ограничено : ) Отличие от СУММ в том, что: - допускается указывать только ссылки на ячейку/ячейки - значение типа ИСТИНА ложь не принимаются - игнорируются числовые аргументы
Впрочем, и то и другое по желанию можно дописать.
видимо, тут надо еще добавить, что число аргументов не ограничено 30, да по идее вообще не ограничено : ) Отличие от СУММ в том, что: - допускается указывать только ссылки на ячейку/ячейки - значение типа ИСТИНА ложь не принимаются - игнорируются числовые аргументы
Впрочем, и то и другое по желанию можно дописать.nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
>>только еще складывает значения объединенных ячеек. Хотя я сейчас попробовал, стандартная функция листа их тоже складывает. А кто-то утверждал обратное... хм...
>>только еще складывает значения объединенных ячеек. Хотя я сейчас попробовал, стандартная функция листа их тоже складывает. А кто-то утверждал обратное... хм...nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
это, конечно, не то, что мне нужно... читаю, как split работает, мне скорее какая-нибудь функция типа unite подошла бы) во всяком случае, не представляю, как это можно мне применить.
это, конечно, не то, что мне нужно... читаю, как split работает, мне скорее какая-нибудь функция типа unite подошла бы) во всяком случае, не представляю, как это можно мне применить._Жека
2nerv, спасибо. попытаюсь разобраться, как это работает. В любом случае, это что-то новое для меня. Единственно, фишка в том, что в рабочем примере количество строк будет очень большим... и через cases их никак не пропишешь.
2Михаил, я же выгрузил пример (сообщение №9), там все есть, первый диапазон ячеек - вводные данные, второй надо получить (это там, где суммы стоят и нули). Nerv вот понял. Я просто более понятнее, чем в примере, объяснить не смогу... ну, если только еще более большой пример сделать.
2nerv, спасибо. попытаюсь разобраться, как это работает. В любом случае, это что-то новое для меня. Единственно, фишка в том, что в рабочем примере количество строк будет очень большим... и через cases их никак не пропишешь.
2Михаил, я же выгрузил пример (сообщение №9), там все есть, первый диапазон ячеек - вводные данные, второй надо получить (это там, где суммы стоят и нули). Nerv вот понял. Я просто более понятнее, чем в примере, объяснить не смогу... ну, если только еще более большой пример сделать._Жека
2Михаил, я же выгрузил пример (сообщение №9), там все есть, первый диапазон ячеек - вводные данные, второй надо получить (это там, где суммы стоят и нули). Nerv вот понял. Я просто более понятнее, чем в примере, объяснить не смогу... ну, если только еще более большой пример сделать.
Понятно. Я просто не догадался ткнуть мышкой в диапазон A6:K9.... счас увидел, что там формулы. Теперь все понятно.
ps Да и еще только счас заметил, что есть еще и пример2.... в общем, пора отдыхать.
Quote (_Жека)
2Михаил, я же выгрузил пример (сообщение №9), там все есть, первый диапазон ячеек - вводные данные, второй надо получить (это там, где суммы стоят и нули). Nerv вот понял. Я просто более понятнее, чем в примере, объяснить не смогу... ну, если только еще более большой пример сделать.
Понятно. Я просто не догадался ткнуть мышкой в диапазон A6:K9.... счас увидел, что там формулы. Теперь все понятно.
ps Да и еще только счас заметил, что есть еще и пример2.... в общем, пора отдыхать.Michael_S