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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2010, 11:49   #1
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
Вопрос Нужна помощь составить формулу или ВБА для дат

Доброго всем дня!
Помогите написать формулу, а то что-то у меня не получается!
В ячейках А1 и В1 стоят начальная и конечная даты, в С2 стоит тоже дата - нужно определить Если дата в С2 находится в промежутке дат А1 и В1, то Е2 значение "1", Если раньше чем А1 то "Раньше" и Если позже чем В1 то "Позже".
И если возможно такое в ВБА помогите с кодом, пожалуйста.
ВБА реагирует на изменение в ячейке С2 и подставляет значение в Е2 и действует в диапазоне С2:С45 и Е2:Е45 соответственно. Спасибо заранее за варианты.
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Старый 04.01.2010, 11:59   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так Вы уж определитесь, Вам нужна формула (достаточно простая - см.ниже) или код на VBA...

вот формула:
Код:
=ЕСЛИ(И(C1>=A1;C1<=B1);"1";ЕСЛИ(C1<A1;"раньше";ЕСЛИ(C1>B1;"позже";"")))
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.01.2010, 13:03   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте KOSTIK1.
Если Вы определились и будете решать задачу с применением VBA,
лучше это делать используя пользовательскую функцию, она "реагирует на изменение в ячейке С2"
Разместив в модуле подобный код:
Код:
Public Function checkDate(vD1, vD2, vD3)
Select Case vD3
Case Is < vD1: checkDate = "Раньше"
Case Is > vD2: checkDate = "Позже"
Case Else: checkDate = 1
End Select
End Function
формула в ячейке E2 будет выглядеть так:
=checkDate(A1;B1;C2)
соответственно "протянув" её по диапазону Е2:Е45, она будет действовать в диапазоне С2:С45
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 04.01.2010, 14:28   #4
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию

Большое спасибо за предложенные варианты! Оба работают прекрасно (подправил =checkDate($A$1;$B$1;C2)) если выбираю дату вручную, но если дату меняет макрос, тогда не реагирует ни формула ни пользовательская функция.
По ходу вопрос - подскажите пользовательскую функцию заменяющую формулу ДАТАМЕС. Спасибо.
С Уважением, Костик

Последний раз редактировалось KOSTIK1; 04.01.2010 в 16:18. Причина: Немного поэкспериментировав увидел недоработку.
KOSTIK1 вне форума Ответить с цитированием
Старый 04.01.2010, 17:04   #5
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию

Вот файл посмотрите!
Вложения
Тип файла: rar Книга1.rar (18.1 Кб, 15 просмотров)
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Старый 04.01.2010, 18:49   #6
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию

Теперь с формулами.
Где нужно подправить код - Подскажите пожалуйста. Спасибо
Вложения
Тип файла: rar Книга2.rar (19.5 Кб, 18 просмотров)
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Старый 04.01.2010, 22:22   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте KOSTIK1.
скорее всего Вам поможет подобная корректировка процедуры обработки двойного клика календаря:
Код:
Private Sub MonthView1_DateDblClick(ByVal DateDblClicked As Date)
    ActiveCell.NumberFormat = sfDate(iNm)
    ActiveCell = MonthView1.Value
    End
End Sub
используемый Вами календарь, я делал для возможности отображения текстового значения даты разных форматов.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 05.01.2010, 11:19   #8
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию

Евгений вы просто ГЕНИЙ! Спасибо Вам большое от души! Теперь всё "У ПОЛНОМ ПОРЯДКЕ". :-)

Костик
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь или совет программиста Demiurg2 Фриланс 8 16.10.2009 12:35
Помогите составить формулу !!!! kutt Microsoft Office Excel 4 24.05.2008 11:44