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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2010, 00:13   #1
drNabla
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 87
По умолчанию написание пользовательской функции

помогите написать пользовательскую функцию которая будет делать следующее и выглядить как-то так "сфунк(массив1;число1;число2)":
((Xi-Y)^2)Z
Y,Z - задаваемые числа
Х - масив в виде A1;A6;A15....An

Заранее всем спасибо.
drNabla вне форума Ответить с цитированием
Старый 04.11.2010, 00:31   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

А что должно делаться-то с элементами массива?
motorway вне форума Ответить с цитированием
Старый 04.11.2010, 00:43   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Если суммировать то так можно

Код:
Public Function SUM_KV(rgn As Range, Y As Double, Z As Double) As Double
Dim n As Long, Sm As Double
Dim RR
RR = rgn.Value
For n = 1 To UBound(RR)
Sm = Sm + (RR(n, 1) - Y) ^ 2
Next
SUM_KV = Sm * Z
End Function
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.11.2010, 14:13   #4
drNabla
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 87
По умолчанию

увлёкся формулой что забыл написать знак суммы....
вроде всё сделал как надо но подставив такое туда =SUM_KV(B4+B149+B297;B2;A149) он выдаёт #ЗНАЧ, в чём проблема? если сделать массив в виде А1:А5 то считает, а поэлемнтно нет...
drNabla вне форума Ответить с цитированием
Старый 04.11.2010, 14:48   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

проблема в синтаксисе.
первый параметр для SUM_KV - это диапазон, а Вы передаете вообще фиг знает что - сумму переменных B4, B149, B297.
В4 - это даже не значение из ячейки В4 это переменная В4, которая у Вас не обьявлена и будет равна 0, как и В149 и В247. Кстати, так же как и В2 и А149.
если в начале модуля поместить Option explicit - то для всех этих В4, В149, В247, В2 и А149 получите ошибку необьявленная переменная.

set rg = application.union([B4], [B149], [B247])
SUM_KV(rg;[B2];[A149])
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.11.2010, 17:30   #6
drNabla
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 87
По умолчанию

=SUM_KV(B4+B149+B297;B2;A149)
это скопировано уже из ячейки, "B4+B149+B297" это тот вариант который предлагает сам эксель когда задаёшь масив, и это ссылки на ячейки...
drNabla вне форума Ответить с цитированием
Старый 04.11.2010, 18:13   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

забираю свои слова взад.
=SUM_KV(B4+B149+B297;B2;A149) - я понял это не часть оператора присваивания, это формула в ячейке, тогда конечно B2 и A149 это ссылки на ячейки, а B4+B149+B297 - это сумма значений из перчисленных ячееек, но никак не диапазон, который нужен функции.
во первых до сих пор никто не знает, что Вы хотите получить с этой самой пользовательской функции, извините за тавтологию какова функция этой функции. на ясна глубина глубин Вашей мысли
допустим функция сделает это
((Xi-Y)^2)Z
i раз...
что делать с каждым посчитанным i-м значением?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.11.2010, 19:06   #8
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Да вроде бы уже поняли сверху, что должна быть сумма перед Xi
motorway вне форума Ответить с цитированием
Старый 04.11.2010, 19:32   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
что должна быть сумма перед Xi
а вот и совершенно не обязательно. это Сергей так решил, если вдруг их надо просуммировать, то вот, пожалуйста..., а что с ними делать на самом деле пока знает только drNabla, но никому не говорит.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.11.2010, 19:48   #10
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Вон же есть сверху
Цитата:
увлёкся формулой что забыл написать знак суммы....
motorway вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание функции вызова компилятора. Яр|/||< (^_^) Общие вопросы Delphi 0 17.04.2010 21:19
Написание несложной мат. функции Rock'n'rolla Общие вопросы Delphi 2 22.03.2010 18:50
Написание Функции palevo Помощь студентам 2 15.12.2009 19:03
Написание пользовательской функции. GoreProgrammist Microsoft Office Excel 9 15.07.2009 15:28
Вопрос о возвращаемом из пользовательской функции значении motorway Microsoft Office Excel 4 14.07.2009 16:22