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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2015, 14:12   #1
snov76
Новичок
Джуниор
 
Регистрация: 23.02.2015
Сообщений: 2
По умолчанию Указать в формуле в качестве диапазона результат работы пользовательской функции

Есть проблема - необходимо расчитывать станд.отклонения для диапазона данных с применением фильтра. То есть в первую очередь диапазон значений фильтруется, а потом то, что было отфильтровано загоняется в формулу в качестве аргумента.
Во первых, как программно указать полученный диапазон я не придумал, единственное что пришло в голову - две функции проверяющие каждую строку на предмет Hiden или not Hiden, таким образом получаю два числа - номер первой строки и номер последней строки в отфильтрованном диапазоне. Вопрос - как теперь в формуле правильно указать аргумент? Я создаю функцию MyRange as Range

Set MyRange = Range(Range("F" & Begin), Range("F" & Ends))
Begin - это номер первой строки, Ends - номер последней строки.

Далее в формуле пишу =СТАНДОТКЛОН.В(MyRange()). Результат - #Знач.
В чём ошибка?
Я не специалист в VBA, но excel нужен в программе как отличный заменитель собственной мат.части.
Во вторых, может есть какой нибудь более правильный способ указать
аргумент формулы в виде отфильтрованного диапазона? У меня результат фильтра всегда последовательность строк без выпадения, то есть фильтруется по дате, соответственно результат фильтра всегда от n и до n+x (к примеру 5,6,7,8,9, но не 5,6,9, то есть внутри диапазона все значения идут подряд без выпадения)
snov76 вне форума Ответить с цитированием
Старый 23.02.2015, 14:25   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(101;СсылкаНаДанные)
- среднее из отфильтрованных (из тех, что видны после применения фильтра)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.02.2015, 14:34   #3
snov76
Новичок
Джуниор
 
Регистрация: 23.02.2015
Сообщений: 2
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
=ПРОМЕЖУТОЧНЫЕ.ИТОГИ(101;СсылкаНаДанные)
- среднее из отфильтрованных (из тех, что видны после применения фильтра)
Спасибо, действительно работает а я нагромоздил тут функций мешок
snov76 вне форума Ответить с цитированием
Старый 23.02.2015, 14:56   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

я обычно такую строку с =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(...) вставляю над данными так удобно, применил новый фильтр - над шапкой постоянно видны результаты, в связке в функциями, которые считают тоже самое, но по всем значениям очень удобно анализировать какие группы данных как влияют на средние, процент группы в общем и пр. (у ПРОМЕЖУТОЧНЫЕ.ИТОГИ - более десятка разных функций)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В delphi 7 не предусмотрен возврат массива как результат работы функции? Illusiony Общие вопросы Delphi 11 21.12.2014 21:17
автоматическое изменение диапазона в формуле Kek Microsoft Office Excel 3 11.12.2011 14:23
Как в формуле в Excel указать абзац? Vatrolf Microsoft Office Excel 2 09.11.2010 16:54
написание пользовательской функции drNabla Microsoft Office Excel 15 05.11.2010 09:08
Написание пользовательской функции. GoreProgrammist Microsoft Office Excel 9 15.07.2009 15:28