#excel #vba #date #format #autofilter
Вопрос:
Я пытаюсь установить автофильтр даты в Excel VBA. Когда я пытаюсь войти:
ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="<" amp; "31.10.2020"
это не работает, но работает, когда я вхожу (в формате США).:
ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="<" amp; "10/31/2020"
Это хорошо работает и для меня (равно 31.10.20
) тоже:
ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="=31.10.20"
Как я могу использовать оба критерия с одним форматом даты (США, немецкий)? А идея?
Ответ №1:
Числовые даты в Excel сохраняются в виде числа с Double
точностью в ячейке, а затем форматируются в числовом формате «под» немецкий, американский или любой другой.
Поэтому самый безопасный способ-использовать это Double
число в качестве критерия.
Criteria1:="<" amp; CDbl(DateSerial(2020, 10, 31))
DateSerial
создает реальную числовую дату и CDbl
превращает ее в Double
. В конце концов, это будет работать для любого числового формата, если даты в ячейке являются реальными числовыми датами (что настоятельно рекомендуется).
Ответ №2:
Попробуйте использовать последовательность ISO:
ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="<" amp; "2020/10/31"
Или попробуйте использовать выражение истинной даты:
ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="<#2020/10/31#"
Комментарии:
1. Это не работает для меня: таблица активов. Диапазон(«$A$1:$P$200″).Поле автофильтра:=14, Критерии 1:=»=» и CDbl(дата(2020, 7, 31)) Таблица активов. Диапазон(«$A$1:$P$200″).Поле автофильтра:=14, Критерии 1:=»=» amp; «2020/10/31″ Только с » Выглядит как «=» и »
2. Возможно, вам нужно истинное выражение даты.
Ответ №3:
Поскольку мне нужно было быстрое решение, я разделил его на два способа:
Если smaller_greater = True = True, то Таблица активов.Диапазон(Ячейки(1, 1), Ячейки(количество строк, количество столбцов)).Поле автофильтра:=13, Критерии 1:=»Диапазон(Ячейки(1, 1), Ячейки(количество строк, количество столбцов)).Поле автофильтра:=13, Критерии 1:=Стандартное значение Заканчивается, Если
Для меня это прекрасно работает. (Значение Smaller_greater основано на значении, которое я получаю, например »