过滤以仅显示在单元格中输入的日期之后的数据

Posted

技术标签:

【中文标题】过滤以仅显示在单元格中输入的日期之后的数据【英文标题】:Filter to only show data after a date which is input in a cell 【发布时间】:2015-08-27 11:08:32 【问题描述】:

我有一个数据集,我只想显示指定日期之后的数据。 该日期将由最终用户定义。我可以对数字执行此操作,但是一旦我尝试对日期执行此操作,宏就会运行,结果是没有显示数据。

我的数据表称为“数据” 包含日期的列是第 8 列(字段 8) 我想定义我得到的数据的输入日期在单元格 H1 中 我在英国(也许有影响???) 我不想开始转换我的底层原始数据。

我想我正在拼命想让单元格 H1 被“视为”一个日期

代码如下:

Sub Macro_show_data_after_inputted_date

    Sheets("Data").Select
    Range("C15").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$4:$AJ$2875").AutoFilter Field:=8, Criteria1:=">" & Range("H1"), _
        Operator:=xlAnd
End Sub

【问题讨论】:

您需要将H列中的数字格式复制到H1并使用Criteria1:=">" & Range("H1").Text 感谢 Jeeped 的成功。 有趣的是,我的数据采用 dd-mmm-yyyy 格式,例如 2015 年 12 月 14 日。我假设(从不假设)是日期格式,尽管是自定义日期格式。但是,出于这些目的,它不像常规日期格式。但是您的 .text 输入可以解决此问题。对于阅读本文的其他人,我的最终代码也可以稍微整理一下。见下文: Sheets("Data").Select ActiveSheet.Range("$A$4:$AJ$2875").AutoFilter Field:=8, Criteria1:=">" & Range("H1").Text, _ Operator :=xlAnd 【参考方案1】:

这是一个数字格式问题。 Range.AutoFilter method 期望其标准的格式与其正在过滤的值的格式相同。可以使用Range .Text property 检索单元格的显示值(又名格式化文本)。

Sub Macro_show_data_after_inputted_date

    with Sheets("Data")
        if .autofiltermode then .autofiltermode = false
        with .Range("C15")
            .AutoFilter Field:=8, Criteria1:=">" & .Range("H1").TEXT
        end with
    end with

End Sub

如果您记录相同的操作并故意输入错误的日期格式,您将在生成的记录代码中看到它在用作字符串条件之前是正确的。

【讨论】:

以上是关于过滤以仅显示在单元格中输入的日期之后的数据的主要内容,如果未能解决你的问题,请参考以下文章

在EXCEL单元格中输入数字会变成“#”字符号该怎么解决?

excel提取单元格中的部分内容

如何在SqlServer单元格中输入null?

EXCEL中如何根据公式自动求出当前单元格的值?

做一个反向过滤器

如何根据 c# winforms 中的列日期和名称将 sql 中的数据输入到特定的 datagridview 单元格中