EXCEL VBA находит максимальную дату и фильтрует x дней до максимальной даты - PullRequest
0 голосов
/ 16 октября 2018

У меня есть лист Excel с датами в столбце А, и мне нужно найти последнюю дату и отфильтровать последние 7 дней до этой последней даты.Я только нашел в Интернете коды vba, которые занимают сегодняшнюю дату - 7 дней, но я не могу использовать их, потому что эти даты относятся к прошлому году.

Пожалуйста, и спасибо!

РЕДАКТИРОВАТЬ:

Спасибо за ваше предложение.Я пытался вставить его в свой код VBA, но он фильтрует 0 результатов.

Sub Filter()
    Dim maxDate As Date
    maxDate = WorksheetFunction.Max(ActiveSheet.Range("A:A"))
    ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:= _
        ">" & maxDate - 6
End Sub

Не работает, так как эта дата-макрос VBA датируется dd.mm.yyyy.(ЗАМЕТЬТЕ ТОЧКУ в конце), 0 результатов в моем случае должны фильтроваться по дд.мм.гггг (без точки).Я не знаю, как фильтровать без точки

РЕДАКТИРОВАТЬ 2: Это работает для меня.

Sub Largest()
    Dim rng As Range
    Dim dblMax As Double
    Set rng = ActiveSheet.Range("A:A")
    dblMax = Application.WorksheetFunction.Max(rng)
    ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:= _
            ">" & dblMax - 7, Operator:=xlAnd
End Sub

1 Ответ

0 голосов
/ 16 октября 2018

Чтобы получить максимальное значение в диапазоне (а столбец равен диапазону) в VBA, используйте worksheetFunction.Max, например,

Dim maxDate as Date
maxDate = worksheetFunction.Max(ActiveSheet.Range("A:A"))

Будьте внимательны при выборе диапазона снепротиворечивые данные, поэтому не путайте даты и числа.

Оттуда вы можете просто вычесть 7 из своей даты (или использовать DateAdd(d, -7, maxDate) и продолжить с кодом, который вы уже нашли.

Редактировать : чтобы использовать дату в качестве значения фильтра, измените тип данных с maxDate на Double. Вы можете проверить это, установив фильтр вручную и введя следующую инструкцию в непосредственное окно (Ctrl + G):

? ActiveSheet.AutoFilter.Filters(1).Criteria1

Это приводит к (значение будет другим для вас) >43329. Фон в том, что Excel / VBA хранит даты как Double.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...