【问题标题】:Select displayed rows based on user criteria根据用户条件选择显示的行
【发布时间】:2015-08-16 05:07:08
【问题描述】:

我已经查看但没有找到我正在尝试的任务的解决方案。我是 VBA 新手,所以学习曲线很陡峭。这是我想要做的:

在 Excel 2010/2013 中,我有一个工作表,其中前 9 行中的内容固定,从第 10 行开始,B 列中有连续日期的数据行。我需要用户能够评估某个范围内的数据工作表中所有日期的子集。

例如:用户在单元格 K1 中输入值“06/15/15”,在单元格 N1 中输入值“06/19/15”。第 10 到 20 行各包含一条记录,B 列是每条记录的日期字段。在此示例中,单元格 B10 包含日期 06/12/15 到单元格 B20,其中包含日期 06/22/15。我需要代码来查看单元格 K1 和 N1 的内容,将它们解释为日期范围的边界,并仅显示行值都为 10 或更大且在该定义范围内的数据行,隐藏所有其他,使标题行 1 到 9 可见。只有大于 9 的行,日期介于用户选择的条件之间并包含在内的行应该可见。

【问题讨论】:

  • 如果您发布了编写此代码的尝试,我们可以帮助您解决可能遇到的任何问题。 SO 不是代码请求服务。
  • @iturner - 我明白你在说什么,但我的尝试没有产生任何有用的结果,当它们不起作用时我删除了它们。我想我对此太陌生了。

标签: vba date


【解决方案1】:

试试这样的:

dim iRow as integer
dim iColumn as integer

iRow = 10     'Row 10
iColumn = 2   'Column B

do until activesheet.cells(iRow, iColumn).value = ""
    if datediff("d", activesheet.range("K1").value, _
        activesheet.cells(iRow, iColumn).value) => -10 AND _
        datediff("d", activesheet.range("N1").value, _
        activesheet.cells(iRow, iColumn).value) =< 10 then _
        activesheet.rows(iRow).entirerow.hidden = true
    iRow = iRow + 1
loop

如果您需要检查多个列,您可以在此循环中添加一个额外的循环,其中 iColumn = iColumn + 1。这是您要查找的内容吗?

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 2021-05-05
    • 2018-07-25
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    相关资源
    最近更新 更多