【问题标题】:Autofilter messing up date format?自动过滤搞乱日期格式?
【发布时间】:2020-12-13 11:37:08
【问题描述】:

我正在尝试使用自动过滤器来过滤日期范围内的日期列。我写了我的代码,发现它不起作用,所以我把它简化了,并尝试录制一个宏。似乎连录制宏都不起作用,因为它弄乱了日期格式。我有西班牙语的 Excel,我正在尝试使用 dd/mm/yyyy 日期格式。我决定通过过滤从 10/01/2020 到 20/01/2020 来记录一个宏,它给了我以下代码:

Selection.AutoFilter

ActiveSheet.Range("$A$1:$AA$95").AutoFilter Field:=18, Criteria1:= _
    ">=10/01/2020", Operator:=xlAnd, Criteria2:="<=20/01/2020"

当我在录制宏时手动执行此操作时,它过滤了 3 个结果,但是当我再次尝试运行宏时,它会弄乱日期格式。如果我检查应用的过滤器,它会显示“在或等于:01/10/2020”和“在或等于:20/01/2020”。知道为什么在我运行代码时它只会改变一个日期的格式以及如何修复它吗?

谢谢

我也尝试过使用格式功能

ActiveSheet.Range("$A$1:$AA$95").AutoFilter Field:=18, Criteria1:= _
    ">=" & Format("10/01/2020", "dd/mm/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format("20/1/2020", "dd/mm/yyyy")

过滤时它仍然将“10/01/2020”更改为“01/10/2020”

【问题讨论】:

标签: excel vba


【解决方案1】:

Excel 喜欢假设格式。我相信这是基于您的语言设置。您可以使用ActiveSheet.Range("$A$1:$AA$95").NumberFormat = "dd/mm/yyyy"重新格式化

Selection.AutoFilter

ActiveSheet.Range("$A$1:$AA$95").AutoFilter Field:=18, Criteria1:= _
    ">=10/01/2020", Operator:=xlAnd, Criteria2:="<=20/01/2020"
ActiveSheet.Range("$A$1:$AA$95").NumberFormat = "dd/mm/yyyy"

【讨论】:

  • 谢谢。但是,我试过了,它改变了列的格式,但是在过滤时它仍然显示“在或等于:01/10/2020”和“在或等于:20/01/2020”作为过滤器应用://
  • 也许您可以将日期更改为默认格式,然后完成条件?
  • 这实际上帮助我解决了它!我将格式更改为 mm/dd/yyyy,过滤然后改回来。谢谢!
  • 很高兴我能帮上忙 :)
猜你喜欢
  • 2013-11-15
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多