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

Вход

Регистрация

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

 

= Мир MS Excel/Сравнение дат и времени с прибавлением - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение дат и времени с прибавлением (Макросы/Sub)
Сравнение дат и времени с прибавлением
Гордей Дата: Среда, 20.03.2019, 00:19 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Приветствую! У самого не получилось найти решение, поэтому прошу помощи в макросе:

в ячейке есть текстовые данные вида "18/03 Mo", где 18 число, 03 месяц и Mo - понедельник (Время предполагаем 00:00:00). Каким кодом можно сравнить эти значения с текущими датой и временем? Нужно так, чтобы сравнивалось, прошли ли сутки и 4 часа после указанной в ячейке даты. Примеры:

а)в ячейке "18/03 Mo", если текущая дата 19/03 04:00, то значение ДА, если меньше - то НЕТ

б) в ячейке "12/06 We", если текущая дата 12/06 23:55:10, то НЕТ

в) в ячейке "12/06 We", если текущая дата 13/06 03:55:55, то НЕТ

Добавил файлик с примером
К сообщению приложен файл: Check.xlsm (28.2 Kb)


Сообщение отредактировал Гордей - Среда, 20.03.2019, 00:46
 
Ответить
СообщениеПриветствую! У самого не получилось найти решение, поэтому прошу помощи в макросе:

в ячейке есть текстовые данные вида "18/03 Mo", где 18 число, 03 месяц и Mo - понедельник (Время предполагаем 00:00:00). Каким кодом можно сравнить эти значения с текущими датой и временем? Нужно так, чтобы сравнивалось, прошли ли сутки и 4 часа после указанной в ячейке даты. Примеры:

а)в ячейке "18/03 Mo", если текущая дата 19/03 04:00, то значение ДА, если меньше - то НЕТ

б) в ячейке "12/06 We", если текущая дата 12/06 23:55:10, то НЕТ

в) в ячейке "12/06 We", если текущая дата 13/06 03:55:55, то НЕТ

Добавил файлик с примером

Автор - Гордей
Дата добавления - 20.03.2019 в 00:19
_Boroda_ Дата: Среда, 20.03.2019, 00:29 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
текстовые данные вида "18/03 Mo"

Где они в файле?
Сколько их - одно или несколько?
Как реально расположены (если несколько)?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
текстовые данные вида "18/03 Mo"

Где они в файле?
Сколько их - одно или несколько?
Как реально расположены (если несколько)?

Автор - _Boroda_
Дата добавления - 20.03.2019 в 00:29
Гордей Дата: Среда, 20.03.2019, 00:31 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Где они в файле?


Дата будет на листе одна и в ячейке A2, листов будет много, для каждого листа макрос будет исполняться отдельно.


Сообщение отредактировал Гордей - Среда, 20.03.2019, 00:32
 
Ответить
Сообщение
Где они в файле?


Дата будет на листе одна и в ячейке A2, листов будет много, для каждого листа макрос будет исполняться отдельно.

Автор - Гордей
Дата добавления - 20.03.2019 в 00:31
_Boroda_ Дата: Среда, 20.03.2019, 00:35 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Из танка вылезайте :D

Где они в файле?

Смотреть нужно как там что написано и действительно ли это текст. А Вы не показываете


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеИз танка вылезайте :D

Где они в файле?

Смотреть нужно как там что написано и действительно ли это текст. А Вы не показываете

Автор - _Boroda_
Дата добавления - 20.03.2019 в 00:35
_Boroda_ Дата: Среда, 20.03.2019, 00:40 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так?
[vba]
Код
    If CDate(Left(Range("A2"), 5)) + 1 + #4:00:00 AM# < Now Then
        x_ = "Да"
    Else
        x_ = "Нет"
    End If
    Range("B2") = x_
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак?
[vba]
Код
    If CDate(Left(Range("A2"), 5)) + 1 + #4:00:00 AM# < Now Then
        x_ = "Да"
    Else
        x_ = "Нет"
    End If
    Range("B2") = x_
[/vba]

Автор - _Boroda_
Дата добавления - 20.03.2019 в 00:40
Гордей Дата: Среда, 20.03.2019, 00:47 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Вот ,подправил файл, как в оригинале. В ячейку A1 нужно помещать значение ДА или НЕТ по результату..

Update:

Вау.. только я готовил правленый файл, а Вы, уважаемый Борода, уже написали нужный код... спасибо!!! не, не так. вот так: СПА СИ Б О!!!


Сообщение отредактировал Гордей - Среда, 20.03.2019, 00:50
 
Ответить
СообщениеВот ,подправил файл, как в оригинале. В ячейку A1 нужно помещать значение ДА или НЕТ по результату..

Update:

Вау.. только я готовил правленый файл, а Вы, уважаемый Борода, уже написали нужный код... спасибо!!! не, не так. вот так: СПА СИ Б О!!!

Автор - Гордей
Дата добавления - 20.03.2019 в 00:47
Гордей Дата: Среда, 20.03.2019, 00:57 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
вот ещё такой момент: при смене года (1-го января 2020) данные по 2019-му году уже не обрабатываются. Файлы носят имя формата 2019-03.xlsb (YYYY-MM.xlsb и так по каждому месяцу и году), как можно это в макросе учесть для корректной проверки файла?

Update: прикрепил файл от декабря 2018-го года
К сообщению приложен файл: 2018-12.xlsm (31.9 Kb)


Сообщение отредактировал Гордей - Среда, 20.03.2019, 01:42
 
Ответить
Сообщениевот ещё такой момент: при смене года (1-го января 2020) данные по 2019-му году уже не обрабатываются. Файлы носят имя формата 2019-03.xlsb (YYYY-MM.xlsb и так по каждому месяцу и году), как можно это в макросе учесть для корректной проверки файла?

Update: прикрепил файл от декабря 2018-го года

Автор - Гордей
Дата добавления - 20.03.2019 в 00:57
_Boroda_ Дата: Среда, 20.03.2019, 01:39 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не совсем понял. Так?
[vba]
Код
If CDate(Left(Range("A2"), 5) & "/" & Left(ThisWorkbook.Name, 4)) + 1 + #4:00:00 AM# < Now Then
[/vba]

И, кстати, у Вас все даннай для заполнения А2 есть, можно формулой заполнять
Код
=--ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА("filename";A2);ПОИСК("[";ЯЧЕЙКА("filename";A2))+1;99);".xlsm]";"-")

И формат ячейки
[$-9]ДД/ММ ДДД
К сообщению приложен файл: 8036689.xlsm (33.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНе совсем понял. Так?
[vba]
Код
If CDate(Left(Range("A2"), 5) & "/" & Left(ThisWorkbook.Name, 4)) + 1 + #4:00:00 AM# < Now Then
[/vba]

И, кстати, у Вас все даннай для заполнения А2 есть, можно формулой заполнять
Код
=--ПОДСТАВИТЬ(ПСТР(ЯЧЕЙКА("filename";A2);ПОИСК("[";ЯЧЕЙКА("filename";A2))+1;99);".xlsm]";"-")

И формат ячейки
[$-9]ДД/ММ ДДД

Автор - _Boroda_
Дата добавления - 20.03.2019 в 01:39
Гордей Дата: Среда, 20.03.2019, 01:47 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
If CDate(Left(Range("A2"), 5) & "/" & Left(ThisWorkbook.Name, 4)) + 1 + #4:00:00 AM# < Now Then


Дааааа! Элегантно и просто! Я уже сделал, но у меня супер-коряво получилось.. Вот так:

' a = Left(Range("A2"), 5) + "/"
' n = ActiveWorkbook.Name
' n = Split(n, "-", -1)
' d = a + n(0)
' If CDate(d) + 1 + #4:00:00 AM# < Now Then

Специально оставлю эти строчки с апострофами в коде как памятник пословице "Век живи - век учись"

СПАСИБО ещё раз Вам, Александр!
 
Ответить
Сообщение
If CDate(Left(Range("A2"), 5) & "/" & Left(ThisWorkbook.Name, 4)) + 1 + #4:00:00 AM# < Now Then


Дааааа! Элегантно и просто! Я уже сделал, но у меня супер-коряво получилось.. Вот так:

' a = Left(Range("A2"), 5) + "/"
' n = ActiveWorkbook.Name
' n = Split(n, "-", -1)
' d = a + n(0)
' If CDate(d) + 1 + #4:00:00 AM# < Now Then

Специально оставлю эти строчки с апострофами в коде как памятник пословице "Век живи - век учись"

СПАСИБО ещё раз Вам, Александр!

Автор - Гордей
Дата добавления - 20.03.2019 в 01:47
_Boroda_ Дата: Среда, 20.03.2019, 01:56 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Только в теги все это безобразие засуньте :D

И я выше дописал еще - чую, что Вы ячейку А2 вручную заполняете ...


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТолько в теги все это безобразие засуньте :D

И я выше дописал еще - чую, что Вы ячейку А2 вручную заполняете ...

Автор - _Boroda_
Дата добавления - 20.03.2019 в 01:56
Гордей Дата: Среда, 20.03.2019, 02:14 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
И я выше дописал еще - чую, что Вы ячейку А2 вручную заполняете ...



Нет, там макросы всё делают. Была проблема только в сравнении дат ) Спасибо!
 
Ответить
Сообщение
И я выше дописал еще - чую, что Вы ячейку А2 вручную заполняете ...



Нет, там макросы всё делают. Была проблема только в сравнении дат ) Спасибо!

Автор - Гордей
Дата добавления - 20.03.2019 в 02:14
_Boroda_ Дата: Среда, 20.03.2019, 07:55 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Если макросы, то почему дни недели везде одинаковые?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕсли макросы, то почему дни недели везде одинаковые?

Автор - _Boroda_
Дата добавления - 20.03.2019 в 07:55
Гордей Дата: Среда, 20.03.2019, 11:53 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Если макросы, то почему дни недели везде одинаковые?


Так файлы с кучей страниц, инфы и макросов, урезал всё до сути проблемы..
 
Ответить
Сообщение
Если макросы, то почему дни недели везде одинаковые?


Так файлы с кучей страниц, инфы и макросов, урезал всё до сути проблемы..

Автор - Гордей
Дата добавления - 20.03.2019 в 11:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение дат и времени с прибавлением (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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