如何基于两列中的值隐藏Excel中的行

时间:2014-05-04 15:02:04

标签: excel vba excel-vba

首先发布这里,我对Excel-VBA的世界很新。

我正在尝试自动化一些报告,并遇到了一些障碍。我试图根据2个seprate列中的单元格值隐藏excel工作表上的行。我给出了一个例子如下。 (真实文档在一个给定时间和任何日期最多可包含50个名称。)

对于此示例,我需要隐藏A列中没有值JIM的所有行,并且在B列中的日期比今天的日期更长。(04/05/2014)

A       B
JIM     04/05/2014
JIM     04/05/2014
BOB     05/05/2014
BOB     04/05/2014
TED     07/05/2014
TED     04/05/2014
BOB     09/05/2014
JIM     04/05/2014
JIM     11/05/2014
TED     12/05/2014

我现在使用下面的代码,但在添加第二个参数时遇到了一些问题。

Sub Delete_Name_Date()

Dim rng As Range, cell As Range

For Each cell In Range("A1:F15")
If cell.Value = "JIM" Then
cell.EntireRow.Hidden = False
Else: cell.EntireRow.Hidden = True

End If
Next


End Sub

任何帮助都会很棒。

由于

亚当

1 个答案:

答案 0 :(得分:1)

试试这个:

Sub Delete_Name_Date()
    Dim cell As Range

    For Each cell In Range("A1:A15")
        With cell
            .EntireRow.Hidden = _
                (.Value <> "JIM" And CDate(.Offset(, 1).Value) > Date)
        End With
    Next
End Sub

另外,为了提高可靠性,我建议您使用ThisWorkbook.Sheets("SheetName").Range("A1:A15")代替Range("A1:A15")