#excel #vba
#превосходить #vba
Вопрос:
Существует много вопросов по контролю качества на эту тему, но, похоже, ничто не отвечает на этот простой вопрос. Я не уверен, почему этот код не работает — все, что мне нужно сделать, это отфильтровать столбец Q с диапазоном дат. Что происходит, это удаляет (фильтрует) все элементы; это не оставляет выбранный диапазон дат:
Dim StDate As Date Dim EndDate As Date StDate = "1/20/21" EndDate = "2/2/21" With ActiveSheet .Range("Q1:Q2500").AutoFilter 1, "gt;=" amp; StDate, xlAnd, "lt;=" amp; EndDate End With
Комментарии:
1. Попробуйте заключить
StDate
иEndDate
войтиDateValue
.2. Дата начала = значение даты(«1/20/21») Дата окончания = значение даты(«2/2/21») тот же результат
3. Содержит ли столбец Q фактические даты (отформатированные числа) или текст, похожий на даты?
4. Короткий формат даты 1/1/21
5. Если вы измените формат на Общий, вы увидите такое число, как
44197
?
Ответ №1:
Фильтр Между Датами
Option Explicit Sub FilterBetweenDates() Const Crit1 As String = "gt;=1/20/21" Const Crit2 As String = "lt;=2/2/21" Dim ws As Worksheet: Set ws = ActiveSheet ' be more specific If ws.AutoFilterMode Then ' remove possbile previous filter ws.AutoFilterMode = False End If Dim rg As Range: Set rg = ws.Range("Q1:Q2500") rg.AutoFilter 1, Crit1, xlAnd, Crit2 End Sub
Комментарии:
1. это сработало идеально! тай!