我在A列中有带有日期的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,应按dd.mm.yyyy(不带点)进行过滤。我不知道如何过滤不带点
EDIT2:这对我有用。
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
答案 0 :(得分:1)
要在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
。