Страницы: 1
RSS
Своя функция СУММА в VBA
 
Привет! Мы знаем что делает функция =СУММА(). Эта функция (неожиданно) суммирует данные ей значения, то есть x1+x2+x3+...+xн. Как сделать свою функцию специальную СУММА с помощью VBA, в которой каждое значение перед суммированием будет изменено. К примеру, каждое значение должно увеличиться на одну единицу и все они должны суммироваться, то есть (x1+1)+(x2+1)+(x3+1)+...+(xн+1).
пс Не нужно предлагать суммировать значения, а потом прибавить их количество
 
Цитата
ne_adlen написал:
Как сделать свою функцию специальную СУММА
какое-то куценькое описание - что функция должна принимать в качестве аргументов? как должна работать с массивами? как реагировать на текстовые/логические значения, ошибки? где ваши попытки?
Соблюдение правил форума не освобождает от модераторского произвола
 
Держите.... добавьте в конце функции +1

Из книги Excel 2010 Power Programming with VBA by John Walkenbach
Изменено: Marat Ta - 06.03.2021 15:23:55
 

Марат та меня опередил

Изменено: Евгений Смирнов - 06.03.2021 15:26:04
 
Цитата
Marat Ta написал:
Держите
Цитата
buchlotnik написал:
как должна работать с массивами?
СУММ работает по-другому
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, неправильно считает что то?
 
Цитата
Marat Ta написал:
неправильно считает что то?
как бы я пример приложил...
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, ну по тех.заданию ТС все работает.
Работа с массивами не требуется, я не уверен, что оно ему нужно.
Изменено: Marat Ta - 06.03.2021 20:33:33
 
Цитата
Marat Ta написал:
по тех.заданию ТС
Цитата
ne_adlen написал:
сделать свою функцию специальную СУММА
приведен пример, в котором функция не работает, в отличие от СУММА - ВЫВОД?
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
Marat Ta написал:
Из книги Excel 2010 Power Programming with VBA by John Walkenbach
Джон явно недоработал, как и в некоторых других местах.  :)  
Изменено: sokol92 - 06.03.2021 20:07:17
Владимир
 
ne_adlen, но кажется я что-то не понял)

для записи
Код
=Sum_My(A1:A23;"+";1)
Код
Function Sum_My(rng As Range, deistvie As String, chislo As Double)
Dim cell As Range
For Each cell In rng
    x = Evaluate(cell & deistvie & chislo)
    Sum_My = Sum_My + x
Next cell
End Function
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, предыдущие 2 темы ТС пропадает с финальной части. Так что, что ему конкретно было нужно - мы уже не узнаем )
Изменено: Marat Ta - 06.03.2021 20:39:48
 
buchlotnik, Marat Ta, простите что плохо описал что хотел. Работа с числами, нужно суммировать массив ячеек, но прежде отдельное значение в массиве изменить следуя единой формуле. В файле представлены два примера:
1. Добавить константу (1). То есть каждое значение массива должна стать на 1 единицу больше, а потом это всё должно суммироваться
2. Вычислить синус каждого значения массива, а потом синусы массива должны суммироваться.
Я понимаю что можно вывести отдельный столбец, где к каждому значению прибавляется 1 или вычисляется синус а потом суммируется, но нельзя ли сделать такое функции "SUM_A+const" и "SUM(sinA)"?
Ещё раз извините за неясное описание, надеюсь тут я смог правильно выразиться
 
Изучаем формулы массива. Ответ:
Код
=СУММ(SIN(A1:A2))
после ввода формулы нажать CTRL+SHIFT+Enter.
Можно начать изучение со статьи разработчика.
Изменено: sokol92 - 07.03.2021 19:10:38
Владимир
 
Цитата
sokol92 написал:
Изучаем формулы массива.
потом переходим к длинным , но не требующих трех кнопок, функциям  ;)
=SUMPRODUCT(A3:A8+B3)
=SUMPRODUCT(SIN(A12:A17))
По вопросам из тем форума, личку не читаю.
 
БМВ, Браво! В очередной раз сожалею что функционалом форума не предусмотрены лайки за ответы  :)  
 
cuprum,  если б не запутанный вопрос, то это б было предложено и buchlotnik, и Mershik. Тут нет ничего сверх естественного.
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо большое за решение
Страницы: 1
Наверх