根据日期隐藏Excel中的行

时间:2015-03-27 20:47:34

标签: excel hide rows

我需要自动隐藏excel中具有过去日期在H3:H3000列中的行。

输入时,下面的代码没有做任何事情:

Sub HideRowsDate()
Dim cell As Range
For Each cell In Range("H3:A350")
If cell.Value <= Now Then
cell.EntireRow.Hidden = True
End If
Next
End Sub

1 个答案:

答案 0 :(得分:0)

  

对于范围内的每个单元格(&#34; H3: A 350&#34;)

我将在上面假设拼写错误并使用范围(&#34; H3: H 350&#34;)。

我强烈怀疑你的日期根本不是日期,而是看起来像日期的文字。看起来像日期的文本(默认情况下,常规数字格式)将保持对齐;实际日期将在单元格中正确对齐。请尝试以下修改,看看它是否能实现您的目标。

Sub HideRowsDate()
    Dim cell As Range
    For Each cell In Range("H3:H350")
        If IsDate(cell.Value) Then
            If DateValue(Format(cell.Value, "mm/dd/yyyy;@")) <= Now Then
                'cell = cell.Value
                cell.EntireRow.Hidden = True
            End If
        End If
    Next
End Sub

这会将看起来像日期的文本转换为实际日期,以便可以将其与 Now 进行比较。实际日期的日期也将被正确处理。这种二元性来自格式化函数的格式掩码中的&lt; date format&gt ;;&lt; text format&gt; 。它忽略了空白单元格,叙述性文本(例如看起来像日期的文本)和不能被视为日期的数字。

此处的下一个逻辑步骤是使用转换的单元格值将实际日期放入单元格。取消注释cell = cell.Value行以实现此目的。