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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 29.06.2007, 13:17   #1
slba
 
Регистрация: 29.06.2007
Сообщений: 8
По умолчанию Изменяемый диапазон массива в функциях

Посоветуйте, возможно ли сделать изменяемое "окно" диапазона массива в стандартных функциях, допустим МАКС(A1:A5) - "окно" 5 строк.
Хотелось бы получить что-то типа МАКС(A1:A(C1)), где C1- ссылка на ячейку, которая в числовом виде задает размер "окна" по количеству строк.
Простым перетаскиванием формул все без проблем, но когда формулы с "окнами" накладываются на диапазон в тысячи строк и еще необходимо подобрать размер "окна" становится не комфортно.

Последний раз редактировалось slba; 29.06.2007 в 13:22. Причина: не корректность формулировки
slba вне форума
Старый 29.06.2007, 14:54   #2
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

C1=10
C2=МАКС(СМЕЩ(A1;;;C1))
C3=МАКС(ДВССЫЛ("A1:A"&C1))
C4=МАКС(A1:ИНДЕКС(A:A;C1))

Обратите внимание на то, что первые две функции являются пересчитываемыми. Т.е. если у Вас возникнут проблемы с пересчётом, ибо первые функции будут пересчитываться, например, при изменении значения любой ячейки любого рабочего листа любой открытой книги, то в этом случае, имеет смысл воспользоваться третим вариантом.
pashulka вне форума
Старый 29.06.2007, 16:51   #3
slba
 
Регистрация: 29.06.2007
Сообщений: 8
По умолчанию

Огромное спасибо за совет pashulka, для удобства перетаскивания функций и для их взаимной совместимости по адресации ссылок я немного изменил их, надеюсь что правильно:
C1=10
C2=МАКС(СМЕЩ(A1;;;C1))
C3=МАКС(ДВССЫЛ("A1:A"&C1))
C4=МАКС(A1:ИНДЕКС(A:A;C1))

C1=10
C2=МАКС(СМЕЩ(A1;;;$C$1+1))
C3=МАКС(A1:ДВССЫЛ("A"&(СТРОКА(A1)+$ C$1)))
C4=МАКС(A1:ИНДЕКС(A:A;СТРОКА(A1)+$C $1))
slba вне форума
Старый 29.06.2007, 17:51   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

В отличии от первоначальных формул, эти представляют уже частный вариант, предназначенный для решения более специфической задачи, причём, для её решения более уместно использовать именно третий вариант, ибо сознательное копирование volatile/пересчитываемых функций, при наличии альтернативного варианта, не есть благо.
pashulka вне форума
Старый 29.06.2007, 19:10   #5
slba
 
Регистрация: 29.06.2007
Сообщений: 8
По умолчанию

Понимаю, еще раз СПАСИБО!
slba вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код в поцедурах и функциях! Jondeer Общие вопросы C/C++ 1 10.06.2008 18:16
Как написать в коде чтобы диапазон А копировался как значение в диапазон В. Dorvir Microsoft Office Excel 12 23.05.2008 22:11
диапазон времени chekanoff БД в Delphi 34 02.03.2008 01:28
Как указать диапазон чисел? Inbox Общие вопросы Delphi 2 29.06.2007 01:21
неразрывный диапазон zetrix Microsoft Office Excel 0 31.10.2006 07:26