在excel vba中的两个日期之间过滤

Posted

技术标签:

【中文标题】在excel vba中的两个日期之间过滤【英文标题】:Filtering between two dates in excel vba 【发布时间】:2017-04-10 18:51:09 【问题描述】:

我需要帮助在两个日期之间进行过滤,这给了我一个错误:

未找到命名参数

我的代码

Dim StartDate As String
Dim EndDate As String
'
StartDate = Date
EndDate = Date + 365
'
ActiveSheet.AutoFilter Field:=7, Criteria1:=">=StartDate", Operator:=xlAnd, Criteria2:="<=EndDate"

任何帮助将不胜感激!

【问题讨论】:

找出错误,但由于今天的日期不在数据范围内,现在正在过滤掉所有数据。对纠正这个错误有什么想法吗? 请用没有发现错误的代码更新您的帖子以及有关要过滤的数据的更多详细信息(它们在哪些单元格中,等等) 请见下文: Dim StartDate As String Dim EndDate As String StartDate = Date EndDate = Date + 365 ActiveSheet.Range("A1:AO1").AutoFilter Field:=7, Criteria1:=" 单元格可以是从 G2 到 G10000000 的任何位置,但它们将始终位于 G 列中 【参考方案1】:

如果您的日期是实际的 Date 值(即不是 String 看起来像日期的值),则如下所示:

Dim StartDate As Date
Dim EndDate As Date
StartDate = Date
EndDate = Date + 365
ActiveSheet.Range("A1:AO1").AutoFilter Field:=7, Criteria1:=">=" & CDbl(StartDate), Operator:=xlAnd, Criteria2:="<=" & CDbl(EndDate)

【讨论】:

它仍然过滤掉所有日期。 根据您的反馈,我查看了格式,显示为“10/21/2016 12:12:26 PM”。这可能与问题有关吗? 我的代码Dim StartDate As String Dim EndDate As String StartDate = Date EndDate = Date + 365 ActiveSheet.Range("A1:AO1").AutoFilter Field:=7, Criteria1:=" Dim StartDate As String Dim EndDate As String ' StartDate = Date EndDate = Date + 365 ' ActiveSheet.AutoFilter Field:=7, Criteria1:=">=StartDate", Operator:=xlAnd, Criteria2: =" 你把事情搞砸了。使用我的答案中的 exact 代码更新您的代码并报告发生的情况。您也可以在“G”列中选择一个带有“日期”的单元格,然后 1)说出您在公式栏中看到的内容 2)在即时窗口中输入 ?selection.numberformat ,按“返回”并报告返回值是什么【参考方案2】:

我在我的谷歌驱动器上发布了一个示例文件。

https://drive.google.com/open?id=0B2w6b7-P-pX1R0dlTlFUSl9xZlE

我可以描述其中的逻辑,但您可以更轻松地下载、使用它并了解它的机制。

【讨论】:

【参考方案3】:

基本逻辑是问题...混合了开始和结束日期逻辑(应该是 EndDate = Date 和 StartDate = Date - 365)。

给您添麻烦了!

【讨论】:

以上是关于在excel vba中的两个日期之间过滤的主要内容,如果未能解决你的问题,请参考以下文章

VBA中的Excel过滤和复制

Excel VBA中的时间计算

具有更多条件的日期之间的 SQL 查询(VBA Excel - Access)

excel日期格式与vba中的不同

通过vba在excel中的“dd/mm/yyyy”日期格式

VBA中日期之间的SQL查询