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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2009, 09:54   #1
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
Вопрос Как сократить формулу

У меня есть 4 OptionButton(a), которые привязаны к ячейкам А1, B1, C1, D1. И если 1-й optionbotton из 4-х имеет значение TRUE, то значения в ячейку тянутся из одного листа, если 2-й равен TRUE - то с значения тянутся с другого листа и т.д.
Формула в ячейке выглядит примерно так:
=IF($A$1=TRUE;VLOOKUP(F2;'Sheet1'!$ A$3:$D$300;2;FALSE);IF($B$1=TRUE;VL OOKUP(F2;'Sheet2'!$A$3:$D$300;2;FAL SE);IF($C$1=TRUE;VLOOKUP(F2;'Sheet3 '!$A$3:$D$300;2;FALSE);IF($D$1=TRUE ;VLOOKUP(F2;'Sheet4'!$A$3:$D$300;2; FALSE)))))

*Vlookup может искать значения не только с листов активной книги.xls, а также с других книг.

**Плюс у меня формулы на случай ошибки прописаны через If(iserror(...);"";(...)) это вдвое увеличивает ее написание. Пример во вложении.

Как можно сократить формулу? Или искать иначе?
Вложения
Тип файла: rar Book1.rar (15.0 Кб, 13 просмотров)
ruavia3 вне форума Ответить с цитированием
Старый 22.04.2009, 10:29   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

А обязательно прописывать формулы? Примените макрос, который будет запускаться по изменению значений OptionButton-ов, искать и расчитывать все, что Вам нужно и вставлять в нужную ячейку (ячейки). Тогда и привязка значений OptionButton-ов к конкретным ячейкам будет не нужна.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.04.2009, 10:35   #3
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

Как запустить макрос для optionbutton без вспомогательной кнопки?
ruavia3 вне форума Ответить с цитированием
Старый 22.04.2009, 10:55   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если у Вас OptionButton-ы на листе созданы как "Элементы управления" (как в примере), то включите "Режим конструктора", зайдите в "Исходный текст" и там пропишите запуск макроса. Например
Код:
Private Sub OptionButton1_Click()
    Run "Macro"
End Sub
Будет запущен макрос с именем "Macro".
Если же OptionButton-ы создать как формы, то просто - назначить макрос.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.04.2009, 11:21   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а вы поверите, если я скажу, что написал формулу длиной 18 символом? которая возвращает значение с нужного листа или пустую строку, когда значение не найдено, т.е. аналог вашей формулы с проверкой.
мало того, эта формула (при небольшой настройке, которая не повлияет на ее длину) может производить поиск на 10, 100, 1000 и т.д. листах.
понятно, все без макросов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.04.2009, 11:23   #6
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

эммм...можно посмотреть, а?
ruavia3 вне форума Ответить с цитированием
Старый 22.04.2009, 11:35   #7
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию macro1

SAS888, выручите с макросом?
Sub Macro1()
'заполняет выделенный диапазон по соответствующим датам столбца B из листа Sheet1, если значение Optionbotton1 = TRUE
End Sub

*Наверняка есть какой-то умный цикл с UBound)
Вложения
Тип файла: rar Book1.rar (18.1 Кб, 13 просмотров)

Последний раз редактировалось ruavia3; 22.04.2009 в 11:39.
ruavia3 вне форума Ответить с цитированием
Старый 22.04.2009, 11:49   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в строке 13 "честная формула", с проверкой, она все равно на 10 символов короче вашей без проверки
в строке 14 короткая формула. вместо ВПР... подставлено имя. в Ф2 пишем дату, выбираем лист, формула возвращает значение из второй колонки листа напротив указанной даты, если она нашлась на листе.
Вложения
Тип файла: rar Книга91.rar (17.1 Кб, 19 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.04.2009, 11:56   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Вопрос с макросом актуален? Или Вас устроит вариант, предложенный IgorGO?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.04.2009, 12:10   #10
ruavia3
Форумчанин
 
Регистрация: 13.03.2009
Сообщений: 253
По умолчанию

SAS888, если есть возможность, то я бы хотел макросом.
ruavia3 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно сократить код jocry Общие вопросы Delphi 2 20.01.2009 08:35
Как сократить время? МАКРОС! jungo Microsoft Office Excel 17 01.05.2008 12:13
как вычислить формулу? Sergeus Microsoft Office Excel 2 26.02.2008 23:56
Как переделать формулу mik Microsoft Office Excel 1 27.10.2007 19:07