Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Напоминалка о ближайшей дате - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Напоминалка о ближайшей дате
alex116 Дата: Пятница, 23.10.2015, 08:15 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день! Пытаюсь сделать чтобы при открытии листа появлялось всплывающее окно(напоминалка) о ближайшей дате из указанного диапазона. В моём примере это столбцы 6 и(или)7. Но почему-то работает криво. Помогите разобраться.
К сообщению приложен файл: 12345.xlsm (21.0 Kb)
 
Ответить
СообщениеДобрый день! Пытаюсь сделать чтобы при открытии листа появлялось всплывающее окно(напоминалка) о ближайшей дате из указанного диапазона. В моём примере это столбцы 6 и(или)7. Но почему-то работает криво. Помогите разобраться.

Автор - alex116
Дата добавления - 23.10.2015 в 08:15
Nic70y Дата: Пятница, 23.10.2015, 08:35 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 9131
Репутация: 2415 ±
Замечаний: 0% ±

Excel 2010
alex116, а в чем кривизна?
вариант с формулой массива
Код
=МИН(ЕСЛИ(R[-1]C[-4]:R[15]C[-3]>=СЕГОДНЯ();R[-1]C[-4]:R[15]C[-3]))-СЕГОДНЯ()
К сообщению приложен файл: 12345.6.xlsm (21.0 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениеalex116, а в чем кривизна?
вариант с формулой массива
Код
=МИН(ЕСЛИ(R[-1]C[-4]:R[15]C[-3]>=СЕГОДНЯ();R[-1]C[-4]:R[15]C[-3]))-СЕГОДНЯ()

Автор - Nic70y
Дата добавления - 23.10.2015 в 08:35
alex116 Дата: Пятница, 23.10.2015, 08:45 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Nic70y, Кривизна в том что в моём примере макрос выбирает не ближайшую дату а первую в списке. Спасибо за ответ.


Сообщение отредактировал alex116 - Пятница, 23.10.2015, 08:48
 
Ответить
СообщениеNic70y, Кривизна в том что в моём примере макрос выбирает не ближайшую дату а первую в списке. Спасибо за ответ.

Автор - alex116
Дата добавления - 23.10.2015 в 08:45
Nic70y Дата: Пятница, 23.10.2015, 08:48 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 9131
Репутация: 2415 ±
Замечаний: 0% ±

Excel 2010
Ну а мой вариант с формулой и макросом в модуле листа не подходит?
в принципе можно и без макроса.


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Пятница, 23.10.2015, 08:48
 
Ответить
СообщениеНу а мой вариант с формулой и макросом в модуле листа не подходит?
в принципе можно и без макроса.

Автор - Nic70y
Дата добавления - 23.10.2015 в 08:48
alex116 Дата: Пятница, 23.10.2015, 08:50 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Nic70y, Ваш вариант рабочий но почему без формулы не работает?
 
Ответить
СообщениеNic70y, Ваш вариант рабочий но почему без формулы не работает?

Автор - alex116
Дата добавления - 23.10.2015 в 08:50
Nic70y Дата: Пятница, 23.10.2015, 08:54 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 9131
Репутация: 2415 ±
Замечаний: 0% ±

Excel 2010
Ну, да. мой вариант - это формула.
могу придумать какой-то цикл, но это не гламурно,
подождем vba'шников


ЮMoney 41001841029809
 
Ответить
СообщениеНу, да. мой вариант - это формула.
могу придумать какой-то цикл, но это не гламурно,
подождем vba'шников

Автор - Nic70y
Дата добавления - 23.10.2015 в 08:54
SLAVICK Дата: Пятница, 23.10.2015, 09:46 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
могу придумать какой-то цикл, но это не гламурно,

Ну тогда решение с негламурным циклом :D :
[vba]
Код
Private Sub test()
    Dim d&, i&, n&, Dn&, D6&, D7&, mR As Range
    d = 100000
    n = ActiveSheet.UsedRange.Rows.Count
    Dn = Now()
    For i = 2 To n
        If IsDate(Cells(i, 6)) Then
            D6 = Cells(i, 6)
           If D6 >= Dn And D6 - Dn < d Then d = D6 - Dn: Set mR = Cells(i, 6)
        End If
        If IsDate(Cells(i, 7)) Then
            D7 = Cells(i, 7)
           If D7 >= Dn And D7 - Dn < d Then d = D7 - Dn: Set mR = Cells(i, 7)
        End If
    Next
  
    If d > 0 Then MsgBox "Ближайшая дата:" & vbCr & mR.Value & vbCr & "Наступит через " & d & " дня/ей"
    If d = 0 Then MsgBox "Ближайшая дата - сегодня" & mR.Value
    mR.Select
End Sub
[/vba]
К сообщению приложен файл: 5630063.xlsm (24.4 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
могу придумать какой-то цикл, но это не гламурно,

Ну тогда решение с негламурным циклом :D :
[vba]
Код
Private Sub test()
    Dim d&, i&, n&, Dn&, D6&, D7&, mR As Range
    d = 100000
    n = ActiveSheet.UsedRange.Rows.Count
    Dn = Now()
    For i = 2 To n
        If IsDate(Cells(i, 6)) Then
            D6 = Cells(i, 6)
           If D6 >= Dn And D6 - Dn < d Then d = D6 - Dn: Set mR = Cells(i, 6)
        End If
        If IsDate(Cells(i, 7)) Then
            D7 = Cells(i, 7)
           If D7 >= Dn And D7 - Dn < d Then d = D7 - Dn: Set mR = Cells(i, 7)
        End If
    Next
  
    If d > 0 Then MsgBox "Ближайшая дата:" & vbCr & mR.Value & vbCr & "Наступит через " & d & " дня/ей"
    If d = 0 Then MsgBox "Ближайшая дата - сегодня" & mR.Value
    mR.Select
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 23.10.2015 в 09:46
alex116 Дата: Пятница, 23.10.2015, 10:13 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
SLAVICK, Всё работает. Спасибо. Всех с наступающим Днем автомобилиста)!!! Правда при первом открытии книги выскакивает это
К сообщению приложен файл: ---.rar (78.3 Kb) · 6635618.jpg (58.5 Kb)


Сообщение отредактировал alex116 - Пятница, 23.10.2015, 11:21
 
Ответить
СообщениеSLAVICK, Всё работает. Спасибо. Всех с наступающим Днем автомобилиста)!!! Правда при первом открытии книги выскакивает это

Автор - alex116
Дата добавления - 23.10.2015 в 10:13
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!