Excel VBA 中的自动筛选 - 日期相等有效 (=31.07.2021) 不同于较小的日期 (< 31.07.2021)



我正试图在Excel VBA中设置日期自动筛选器。当我尝试输入:

ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="<" & "31.10.2020"

它不起作用,但当我输入(以美国格式(时它起作用:

ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="<" & "10/31/2020"

这对我来说也很好(等于31.10.20(:

ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="=31.10.20"

如何在一个日期格式(美国、德国(中同时使用这两个标准?想法呢?

Excel中的数字日期在单元格中以Double精度保存为数字,然后使用数字格式"看";德国人、美国人或其他什么人。

因此,最安全的方法是将这个Double数作为标准。

Criteria1:="<" & CDbl(DateSerial(2020, 10, 31))

DateSerial创建一个实际数字日期,CDbl将其转换为Double。最后,只要单元格中的日期是真实的数字日期(强烈建议(,这将适用于任何数字格式。

尝试使用ISO序列:

ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="<" & "2020/10/31"

或者尝试使用一个真实的日期表达式:

ActiveSheet.Range("$A$1:$P$100").AutoFilter Field:=13, Criteria1:="<#2020/10/31#"

因为我需要一个快速的解决方案,所以我将其分为两种方式:

如果smaller_greater=True=True,则ActiveSheet.Range(单元格(1,1(,单元格(RowsCount,ColumnCount((。自动筛选字段:=13,标准1:="<quot&US格式日期值其他的ActiveSheet.Range(单元格(1,1(,单元格(RowsCount,ColumnCount((。自动筛选字段:=13,标准1:=StandardDateValue如果结束

这对我来说很好

相关内容

最新更新