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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2013, 17:52   #1
Stem79
Пользователь
 
Регистрация: 29.01.2013
Сообщений: 43
Лампочка Как в функцию передать часть диапазона?

Здравствуйте, есть таблица с именованными столбцами:

А:А - это _оценки 1
B:B - это _оценки 2
С:С - это _фактор

А B C
1 0 1
2 1 1
2 2 2
3 2 3
4 1 3
5 1 3
6 0 4

В функцию СУММ нужно передать не весь диапазон, а его часть которая определяется столбцом С и значением в его ячейке.

Например: подсчитать cумму значений столбцов _оценки1 и _оценки2 начиная со значения 3 в столбце _фактор.

в функцию СУММ нужно передать часть диапазона _оценки1 и оценки2, а не весь.

Как это сделать? Можно как-то формулой отсечь ненужное и получить новый диапазон, который и передать в функцию? Вопрос в том, чтобы получить именно нужный диапазон, а не проводить расчет через какие-то другие формулы.

функция СУММ пользовательская и имеет спецификацию: Function СУММ(v1 As Range, v2 As Range) As String

Спасибо.

Последний раз редактировалось Stem79; 06.02.2013 в 17:57.
Stem79 вне форума Ответить с цитированием
Старый 06.02.2013, 18:03   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну если пользовательская - так можно внутри крутить как угодно. Добавьте ещё один параметр Optional - если он задан, то начинать суммировать только с строки, где в третьем диапазоне такое встречается. Или только такие строки.
И название я бы функции дал другое, хотя бы МояСУММ() -иначе могут быть сюрпризы в русском Экселе.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.02.2013, 18:11   #3
Stem79
Пользователь
 
Регистрация: 29.01.2013
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Ну если пользовательская - так можно внутри крутить как угодно. Добавьте ещё один параметр Optional - если он задан, то начинать суммировать только с строки, где в третьем диапазоне такое встречается. Или только такие строки.
И название я бы функции дал другое, хотя бы МояСУММ() -иначе могут быть сюрпризы в русском Экселе.
Функцию внутри крутить не хочется, хочется средствами формул Екселя определить диапазон, который бы передавался в функцию.
Stem79 вне форума Ответить с цитированием
Старый 06.02.2013, 18:20   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Вариант 1:
=СУММ(ЕСЛИ(Кол.С=3;Кол.А)) - формула массива
где Кол.С и Кол.А - ссылки на полные диапазоны с данными. ЕСЛИ от колонкиА оставит только те значения, где Кол.С = 3 (собственно, то что Вы хотите).

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

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Вариант 1:
=СУММ(ЕСЛИ(Кол.С=3;Кол.А)) - формула массива
где Кол.С и Кол.А - ссылки на полные диапазоны с данными. ЕСЛИ от колонкиА оставит только те значения, где Кол.С = 3 (собственно, то что Вы хотите).

Вариант 2:
фильтр по колонке С, и формула с =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(...)
Великолепное решение, спасибо!

Последний раз редактировалось Stem79; 06.02.2013 в 19:18.
Stem79 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать Динамический массив в функцию? RainCat Помощь студентам 4 13.04.2011 11:25
Как передать указатель на функцию в функцию WIN32APIist Общие вопросы C/C++ 1 27.01.2011 10:35
Как в Си# передать в функцию объект по значению? vedro-compota Общие вопросы .NET 7 17.01.2011 19:02
Как передать объект в функцию? BadProgrammer Общие вопросы C/C++ 4 06.11.2010 11:39
Как передать в функцию указатель на String avd Общие вопросы C/C++ 6 06.06.2010 17:52