Vba excel сравнение дат
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение, указывающее количество интервалов времени между двумя значениями Date .
Перегрузки
Вычитает Date1 значение, Date2 указывающее количество интервалов времени между двумя Date значениями.
Вычитает Date1 из Date2 значения, указывающего количество интервалов времени между двумя Date значениями.
DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear)
Вычитает Date1 значение, Date2 указывающее количество интервалов времени между двумя Date значениями.
Параметры
Обязательный. Значение перечисления DateInterval или строковое выражение, представляющее интервал времени, используемый в качестве единицы измерения разницы между Date1 и Date2 .
Обязательный. Первое значение даты/времени для использования в расчете.
Обязательный. Второе значение даты/времени для использования в расчете.
Необязательный элемент. Значение, выбранное из перечисления FirstDayOfWeek, указывающее первый день недели. Если этот параметр не задан, используется значение Sunday.
Необязательный элемент. Значение, выбранное из перечисления FirstWeekOfYear, указывающее первую неделю года. Если этот параметр не задан, используется значение Jan1.
Возвращаемое значение
Значение типа long, указывающее количество интервалов времени между двумя значениями Date .
Исключения
Значение Date1 , Date2 или DayofWeek выходит за пределы допустимого диапазона.
Значение Date1 или Date2 имеет недопустимый тип.
Примеры
В этом примере функция используется DateDiff для отображения количества дней между заданной датой и сегодня.
Комментарии
Функцию DateDiff можно использовать для определения количества указанных интервалов времени между двумя значениями даты и времени. Например, можно вычислить DateDiff количество дней между двумя датами или количество недель между сегодня и окончанием года.
Поведение
Обработка параметров. DateDiff Вычитает значение из значения Date1 Date2 для получения разницы. Ни значение не изменяется в вызывающей программе.
Возвращаемые значения. Так как Date1 они Date2 имеют Date тип данных, они содержат точные значения даты и времени до 100 наносекунд в системном таймере. DateDiff Однако всегда возвращает количество интервалов времени в виде Long значения.
Если Date1 представляет более позднюю дату и время, Date2``DateDiff возвращает отрицательное число.
Интервалы дня. Если Interval задано значение DateInterval.DayOfYear , оно обрабатывается так же, как DateInterval.Day и , так как DayOfYear не является значимым единицей для интервала времени.
Интервалы недели. Если Interval задано значение DateInterval.WeekOfYear , возвращаемое значение представляет количество недель между первым днем недели, содержащим Date1 и первым днем недели, содержащим Date2 . В следующем примере показано, как это приводит к DateInterval.Weekday различным результатам.
В предыдущем примере возвращается значение 0, DateDiff так wD как разница между двумя датами составляет менее семи дней, но возвращается 1, wY так как между первыми днями соответствующих календарных недель существует семидневная разница.
Большие интервалы. Если Interval задано значение DateInterval.Year , возвращаемое значение вычисляется исключительно из частей Date1 года и Date2 . Аналогичным образом возвращаемое значение DateInterval.Month вычисляется исключительно из частей года и месяца аргументов, а также для DateInterval.Quarter кварталов, содержащих две даты.
Например, при сравнении с 31 декабря по 1 января следующего года DateDiff возвращается 1 для DateInterval.Year , DateInterval.Quarter или DateInterval.Month , хотя в большинстве случаев прошло всего один день.
Для таких культур, как японский, имеющие несколько эпох, DateDiff метод не возвращает разницу в годах, если разница охватывает две или более эр. Вместо этого можно вычислить разницу в значениях, возвращаемых свойствомYear, как показано в следующем примере. date2.Year - date1.Year
Другие интервалы. Так как каждое Date значение поддерживается структурой DateTime , его методы предоставляют дополнительные параметры при поиске интервалов времени. Например, можно использовать Subtract метод в одной из перегруженных форм: DateTime.Subtract вычитает из TimeSpan переменной Date другое Date значение и DateTime.Subtract вычитает Date значение для возврата TimeSpan. Вы можете определить, сколько миллисекунд требуется, как показано в следующем примере.
Аргумент Interval может иметь один из следующих параметров.
Значение перечисления | Строковое значение | Единица времени |
---|---|---|
DateInterval.Day | "d" | День |
DateInterval.DayOfYear | "y" | День |
DateInterval.Hour | "h" | Час |
DateInterval.Minute | "n" | Минута |
DateInterval.Month | "m" | Месяц |
DateInterval.Quarter | "q" | Quarter |
DateInterval.Second | "s" | Second |
DateInterval.Weekday | "w" | Неделя |
DateInterval.WeekOfYear | "ww" | Неделя календаря |
DateInterval.Year | "yyyy" | Year; |
Аргумент DayOfWeek может иметь один из следующих параметров.
Значение перечисления | Значение | Описание |
---|---|---|
FirstDayOfWeek.System | 0 | Первый день недели, указанный в параметрах системы |
FirstDayOfWeek.Sunday | 1 | Воскресенье (по умолчанию) |
FirstDayOfWeek.Monday | 2 | Понедельник (соответствует стандарту ISO 8601, раздел 3.17) |
FirstDayOfWeek.Tuesday | 3 | Вторник |
FirstDayOfWeek.Wednesday | 4 | Среда |
FirstDayOfWeek.Thursday | 5 | Четверг |
FirstDayOfWeek.Friday | 6 | Пятница |
FirstDayOfWeek.Saturday | 7 | Суббота |
Аргумент WeekOfYear может иметь один из следующих параметров.
Значение перечисления | Значение | Описание |
---|---|---|
FirstWeekOfYear.System | 0 | Первая неделя года, указанная в параметрах системы |
FirstWeekOfYear.Jan1 | 1 | Неделя, в которой происходит 1 января (по умолчанию) |
FirstWeekOfYear.FirstFourDays | 2 | Неделя, которая имеет по крайней мере четыре дня в новом году (соответствует стандарту ISO 8601, раздел 3.17) |
FirstWeekOfYear.FirstFullWeek | 3 | Первая полная неделя в новом году |
См. также раздел
Применяется к
DateDiff(String, Object, Object, FirstDayOfWeek, FirstWeekOfYear)
Вычитает Date1 из Date2 значения, указывающего количество интервалов времени между двумя Date значениями.
Параметры
Обязательный. Значение перечисления DateInterval или строковое выражение, представляющее интервал времени, используемый в качестве единицы измерения разницы между Date1 и Date2 .
Обязательный. Первое значение даты/времени для использования в расчете.
Обязательный. Второе значение даты/времени для использования в расчете.
Необязательный элемент. Значение, выбранное из перечисления FirstDayOfWeek, указывающее первый день недели. Если этот параметр не задан, используется значение Sunday.
Необязательный элемент. Значение, выбранное из перечисления FirstWeekOfYear, указывающее первую неделю года. Если этот параметр не задан, используется значение Jan1.
Возвращаемое значение
Значение типа long, указывающее количество интервалов времени между двумя значениями Date .
Исключения
Значение Date1 , Date2 или DayofWeek выходит за пределы допустимого диапазона.
Значение Date1 или Date2 имеет недопустимый тип.
Примеры
В этом примере функция используется DateDiff для отображения количества дней между заданной датой и сегодня.
Комментарии
С помощью DateDiff функции можно определить, сколько указанных интервалов времени существует между двумя значениями даты и времени. Например, можно использовать для DateDiff вычисления количества дней между двумя датами или числа недель между сегодня и концом года.
Поведение
Обработка параметров. DateDiff Вычитает значение Date1 из значения Date2 , чтобы получить разницу. Ни значение не изменяется в вызывающей программе.
Возвращаемые значения. Так как Date1 они Date2 относятся к типу Date данных, они содержат точные значения даты и времени до 100 наносекундных тактов в системном таймере. DateDiff Однако всегда возвращает количество интервалов времени в виде Long значения.
Если Date1 представляет более позднюю дату и время, чем Date2 , DateDiff возвращает отрицательное число.
Интервалы дня. Если Interval задано значение DateInterval.DayOfYear , он обрабатывается так же, как и , так как DateInterval.Day``DayOfYear не является значимым единицей для интервала времени.
Интервалы недели. Если Interval задано значение DateInterval.WeekOfYear , возвращаемое значение представляет количество недель между первым днем недели, содержащимся Date1 в ней, и первым днем недели. Date2 В следующем примере показано, как это приводит к разным результатам. DateInterval.Weekday
В предыдущем примере DateDiff возвращается значение 0, так wD как разница между двумя датами меньше семи дней, но возвращает 1, так wY как между первыми днями соответствующих календарных недель существует семидневная разница.
Большие интервалы. Если Interval задано значение DateInterval.Year , возвращаемое значение вычисляется исключительно из частей Date1 года и Date2 . Аналогичным образом возвращаемое значение DateInterval.Month вычисляется исключительно из частей аргументов года и месяца, а DateInterval.Quarter также из кварталов, содержащих две даты.
Например, при сравнении от 31 декабря до 1 января следующего года DateDiff возвращается значение 1 для DateInterval.Year , DateInterval.Quarter или DateInterval.Month , даже если не более одного дня прошло.
Для таких культур, как японский, имеющие несколько эпох, метод не возвращает разницу в годах, DateDiff если разница охватывает две или более эпох. Вместо этого можно вычислить разницу в значениях, возвращаемых свойствомYear, как показано в следующем примере: date2.Year - date1.Year
Другие интервалы. Так как каждое Date значение поддерживается структурой DateTime , его методы предоставляют дополнительные параметры при поиске интервалов времени. Например, можно использовать Subtract метод в любой из перегруженных форм: DateTime.Subtract вычитает TimeSpan переменную из переменной Date , чтобы вернуть другое Date значение, и DateTime.Subtract вычитает Date значение для возврата TimeSpan. Вы можете определить, сколько миллисекунд занимает процесс, как показано в следующем примере.
Returns a Variant (Long) specifying the number of time intervals between two specified dates.
Syntax
DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )
The DateDiff function syntax has these named arguments:
Part | Description |
---|---|
interval | Required. String expression that is the interval of time you use to calculate the difference between date1 and date2. |
date1, date2 | Required; Variant (Date). Two dates you want to use in the calculation. |
firstdayofweek | Optional. A constant that specifies the first day of the week. If not specified, Sunday is assumed. |
firstweekofyear | Optional. A constant that specifies the first week of the year. If not specified, the first week is assumed to be the week in which January 1 occurs. |
Settings
The interval argument has these settings:
Setting | Description |
---|---|
yyyy | Year |
q | Quarter |
m | Month |
y | Day of year |
d | Day |
w | Weekday |
ww | Week |
h | Hour |
n | Minute |
s | Second |
The firstdayofweek argument has these settings:
Constant | Value | Description |
---|---|---|
vbUseSystem | 0 | Use the NLS API setting. |
vbSunday | 1 | Sunday (default) |
vbMonday | 2 | Monday |
vbTuesday | 3 | Tuesday |
vbWednesday | 4 | Wednesday |
vbThursday | 5 | Thursday |
vbFriday | 6 | Friday |
vbSaturday | 7 | Saturday |
The firstweekofyear argument has these settings:
Constant | Value | Description |
---|---|---|
vbUseSystem | 0 | Use the NLS API setting. |
vbFirstJan1 | 1 | Start with week in which January 1 occurs (default). |
vbFirstFourDays | 2 | Start with the first week that has at least four days in the new year. |
vbFirstFullWeek | 3 | Start with first full week of the year. |
Remarks
Use the DateDiff function to determine how many specified time intervals exist between two dates. For example, you might use DateDiff to calculate the number of days between two dates, or the number of weeks between today and the end of the year.
To calculate the number of days between date1 and date2, you can use either Day of year ("y") or Day ("d"). When interval is Weekday ("w"), DateDiff returns the number of weeks between the two dates. If date1 falls on a Monday, DateDiff counts the number of Mondays until date2. It counts date2 but not date1.
If interval is Week ("ww"), however, the DateDiff function returns the number of calendar weeks between the two dates. It counts the number of Sundays between date1 and date2. DateDiff counts date2 if it falls on a Sunday; but it doesn't count date1, even if it does fall on a Sunday.
If date1 refers to a later point in time than date2, the DateDiff function returns a negative number. The firstdayofweek argument affects calculations that use the "w" and "ww" interval symbols.
If date1 or date2 is a date literal, the specified year becomes a permanent part of that date. However, if date1 or date2 is enclosed in double quotation marks (" "), and you omit the year, the current year is inserted in your code each time the date1 or date2 expression is evaluated. This makes it possible to write code that can be used in different years.
When comparing December 31 to January 1 of the immediately succeeding year, DateDiff for Year ("yyyy") returns 1 even though only a day has elapsed.
For date1 and date2, if the Calendar property setting is Gregorian, the supplied date must be Gregorian. If the calendar is Hijri, the supplied date must be Hijri.
Example
This example uses the DateDiff function to display the number of days between a given date and today.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Возвращает значение типа Variant (Long), указывающее на количество интервалов времени между двумя указанными датами.
Синтаксис
DateDiff(интервал, дата1, дата2, [ первый_день_недели, [ первая_неделя_года ]] )
Синтаксис функции DateDiff использует следующие именованные аргументы:
Часть | Описание |
---|---|
интервал | Обязательный аргумент. Строковое выражение, которое обозначает интервал времени, используемый для вычисления разницы значений дата1 и дата2. |
дата1, дата2 | Обязательный элемент; Variant (Date). Две даты, которые требуется использовать в расчете. |
первый_день_недели | Необязательный аргумент. Константа, задающая первый день недели. Если она не указана, им является воскресенье. |
первая_неделя_года | Необязательно. Константа, задающая первую неделю года. Если она не указана, первой неделею является неделя, начинающаяся 1 января. |
Параметры
Аргумент интервал имеет следующие параметры:
Setting | Описание |
---|---|
yyyy | Год |
q | Квартал |
m | Месяц |
y | День года |
d | День |
w | День недели |
ww | Неделя |
h | Часы |
n | Минуты |
s | Секунды |
Аргумент первый_день_недели может принимать следующие значения:
Константа | Значение | Описание |
---|---|---|
vbUseSystem | 0 | Используются параметры API NLS. |
vbSunday | 1 | Воскресенье (по умолчанию) |
vbMonday | 2 | Понедельник |
vbTuesday | 3 | Вторник |
vbWednesday | 4 | Среда |
vbThursday | 5 | Четверг |
vbFriday | 6 | Пятница |
vbSaturday | 7 | Суббота |
Константа | Значение | Описание |
---|---|---|
vbUseSystem | 0 | Используются параметры API NLS. |
vbFirstJan1 | 1 | Начать с недели, содержащей 1 января (по умолчанию). |
vbFirstFourDays | 2 | Первой неделей считается та, которая содержит хотя бы четыре дня нового года. |
vbFirstFullWeek | 3 | Первой неделей считается первая полная неделя года. |
Примечания
Используйте функцию DateDiff для определения количества указанных интервалов времени между двумя датами. Например, DateDiff можно использовать для вычисления числа дней между двумя датами или числа недель между сегодняшним днем и концом года.
Для вычисления числа дней между аргументами дата1 и дата2 используется значение "День года" ("y") или "День" ("d"). Если интервал задан как "День недели" ("w"), DateDiff возвращает число недель между двумя датами. Если день дата1 приходится на понедельник, DateDiff считает число понедельников до дня дата2. День, соответствующий значению аргумента дата2, учитывается, а дата1 — нет.
Однако если интервал задан как "Неделя" ("ww"), функция DateDiff возвращает число календарных недель между двумя датами. Для этого рассчитывается число воскресений между днями дата1 и дата2. DateDiff учитывает день дата2, если он приходится на воскресенье; день дата1 не учитывается, даже если он приходится на воскресенье.
Если значение дата1 соответствует более поздней дате, чем значение дата2, функция DateDiff возвращает отрицательное число. Аргумент первый_день_недели влияет на вычисления, если заданы значения "w" и "ww".
Если аргумент дата1 или дата2 содержит литерал даты, указанный год становится постоянной частью этой даты. Однако если аргумент дата1 или дата2 заключен в двойные кавычки (" "), а год опущен, при каждом вычислении выражения дата1 или дата2 в код вставляется текущий год. Это позволяет писать код, который можно использовать для разных лет.
При сравнении 31 декабря с 1 января следующего года функция DateDiff для года ("yyyy") возвращает значение 1, не смотря на то, что разница составляет всего один день.
Если в свойстве Calendar задан григорианский календарь, аргументы дата1 и дата2 следует указывать соответствующим образом. Если используется календарь Хиджра, дата должна соответствовать ему.
Пример
В данном примере функция DateDiff отображает число дней между указанной датой и сегодняшним днем.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Разность двух дат
Добрый день! Есть такая строчка: If CDate(TextBox1.Text) = CDate(excel_sheet.Cells(row, 1)) Then.
Сравнение двух дат и вывод дат находящихся между ними
Здравствуйте! Тут такое дело, вводятся две определенные ДАТЫ в Edit1 и Edit2 в формате.
Сравнение двух дат
Всем Доброго времени суток. Подскажите, пожалуйста, как сравнить 2 даты в формате "ДД.ММ.ГГГГ.
Сравнение двух дат
Пишу форум и надо новые постинги помечать гифом типа new . Так вот если постинг больше двух часов.
Перечитал задачу несколько раз во всех направлениях и ничего не понял -
как надо объединять дату, породу и капусту?
Ребята. я вчера тоже разов 20 перечитал и понял что я ничего не понял ))))
Хотел уточнить что имел ввиду автор, но не решился. не хотел показывать что я тугодум ))))))))))))))
Автор. уточни пожалуйста что надо с чем сравнивать.
OR - ИЛИ ------ должно выполниться одно из условий
AND - И ------- должно выполниться оба условия и одно и второе.
А я тоже ничего не понял, но зато рискнул выполнить эту задачу
наверное предпологаются какието характеристики родителей этого кролика
а затем нужно чтото сравнить и получить некий результат
так как исходных данных очень мало я предположил сделать по градациям цвета и роста матери и оца получив среднее
от этих характеристик, получить-то можно только куда прикручивать сравнение ? )))
на всякий случай я отделался дежурной фразой что это *чудо* нашли в капусте.. это если входные значения окажуться неверными
итак код этого решения:
Тоесть в моём примере при получении кролика если отец чёрный а мать белая
то градация увеличивается до 4-х значений кролик может быть от черного до белого
а если отец пятнистый а мать чёрная то кролик не получится белым, тоже самое и с размерами
тоесть вычисляется чтото среднее от цвета и роста отца и матери.. ну както так..
Название * Сравнение двух дат* слишком тривиальное для этой темы, больше бы подошло .
*как кролики кроликов делали* ))
Сравнивайте, как дату, а не как текст:
По-разному можно. Псевдокодом:
Условие1 OR Условие2 AND NOT Условие3
IF Условие3 then
else
IF Условие1 OR Условие2 then
или через Select Case
что это *чудо* нашли в капусте.. это если входные значения окажуться неверными
итак код этого решения:
А я тоже ничего не понял, но зато рискнул выполнить эту задачу
наверное предпологаются какието характеристики родителей этого кролика
а затем нужно чтото сравнить и получить некий результат
так как исходных данных очень мало я предположил сделать по градациям цвета и роста матери и оца получив среднее
от этих характеристик, получить-то можно только куда прикручивать сравнение ? )))
на всякий случай я отделался дежурной фразой что это *чудо* нашли в капусте.. это если входные значения окажуться неверными
итак код этого решения:
Visual BasicВыделить код
Я использовал этот вариант
If Text1.Text = Text3.Text Or Text2.Text = Text3.Text Then
MsgBox "Все правильно"
Else
MsgBox "Не правильно"
End If
Но твой по лучше))) Спасибо
Мне нужно было что бы он из двух вариантов текста начал сравнивать с третим и выводит решение.
Добрый, день. Подскажите пожалуйста как можно решить поставленную задачу.
Для каждой записи CAMA нужно проверить ближайшие ряды с записями MLS.
Сравнить дату CAMA i дату ближайшей по дате записи МLS.
Если разница в датах меньше или ровна 10 дням, свести записи вместе и соединить ячейки в столбце H указав в объединённой ячейке букву М.
Вывести разницу в днях и в годах между парой значений.
Если запись MLS уже является частью пары оно не может быть использовано повторно для другой записи CAMA.
подскажите как решить задачу? при помощи каких инструментов?
сравнение дат
Привет! Помогите с задачкой. в 2 текстбокса через маску пользователь вводит даты формата 00.00.00.
Сравнение дат
Подскажите кто-нибудь пожалуйста: задание снять показания в течении 7 последних дней при сравнении.
Сравнение дат
Добрый день! Помогите пожалуйста, решить такой вопрос. Нужно, чтобы при нажатии в форме на.
Сравнение дат и автоподастановка данных
Добрый день! Помогите, пожалуйста, решить такой вопрос (пример во вложении). На первом листе.
Спасибо за то что ответили. Макрос не совсем правильно работает. Например он не соединил ряды подчеркнутые красным и синим хотя они попадают под требования (разница в датах ровна или ниже 10 дней). Можно ли его приспособить к таблице с заголовками а не только к диапазону?
Пример.xlsx
Если объединять по несколько строк CAMA и несколько строк MLS в один блок, то надо подробнее описать алгоритм.
Особенно в части противоречия с правилом:
Если запись MLS уже является частью пары оно не может быть использовано повторно для другой записи CAMA
Можно ли модифицировать макрос так что бы он работал не для диапазона а для таблицы с заголовками.
1. При нахождение значения КАМА в столбце Clasiffication вывести М1
2. Поиск ближайшего значения МЛС в диапазоне 10 дней от даты КАМА
3. Вывод для найденного значения МЛС в столбце Classification М1 (Таким образом создать пару МЛС/КАМА с индикатором М1 не объеденяя ячейки, МЛС с заполненной ячейкой Classification не должен использоваться повторно.)
4. Перейти к следующему значению КАМА вывести в столбце Classification M2 создав пару КАМА/МЛС с индикатором М2
5. Для значений КАМА которые не имеют пары МЛС в интервале 10 дней вывести значение P если значение находится в интервале 12 месяцев от ПОСЛЕ даты ближайшего значения КАМА у которого есть пара
5. Для значений КАМА которые не имеют пары МЛС в интервале 10 дней вывести значение H если значение находится в интервале 12 месяцев от ПЕРЕД датой ближайшего значения КАМА у которого есть пара
Читайте также: