我正试图在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如果结束
这对我来说很好