Вам необходимо сначала преобразовать дату в двойное число, чтобы сравнить фактическое значение даты независимо от формата.
"<=" & CDbl(CDate("13/06/2018"))
Почему это так?
Если выобъединить string
с date
, как в "<=" & CDate("13/06/2018")
, date
преобразуется в string
, и в результате получается "<=13/06/2018"
(здесь дата является строкой, а не значением).
Если вы преобразуете date
в double
CDbl(CDate("13/06/2018")
, результатом будет 43264
, который является серийным номером, представляющим дату.Даты в Excel хранятся в виде серийных номеров, начиная с 1900-01-01
, поэтому 2018-06-13
- это день 43264
, так как 1900-01-01
.
Так что с "<=" & CDbl(CDate("13/06/2018"))
вы фактически сравниваете значение ячейки с "<=43264"
.Таким образом, вы сравниваете значение, а не текст.Это работает, потому что если ячейка отформатирована как date
, Excel фактически сохраняет серийное значение, но показывает отформатированную строку для совместимости с пользователем.
Заключение
Если вы хотите всегда сравнивать датысравнивать их значения, а не строки.
Также см .: Как использовать даты и время в Excel .