Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何基于两列中的值在Excel中隐藏行_Vba_Excel - Fatal编程技术网

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

Vba 如何基于两列中的值在Excel中隐藏行,vba,excel,Vba,Excel,第一篇文章在这里,我是非常新的世界Excel VBA 我正在尝试自动化一些报告,但遇到了一个小问题。我试图根据两列中单元格的值隐藏excel工作表上的行。下面我举了一个例子。(真正的文档在给定的时间和几乎任何日期最多可以包含50个名称。) 对于本例,我需要隐藏A列中没有JIM值且B列中的日期大于todays日期的所有行。(2014年5月4日) 我正在使用下面的代码,但在添加第二个参数时遇到了一些问题 Sub Delete_Name_Date() Dim rng As Range, cell A

第一篇文章在这里,我是非常新的世界Excel VBA

我正在尝试自动化一些报告,但遇到了一个小问题。我试图根据两列中单元格的值隐藏excel工作表上的行。下面我举了一个例子。(真正的文档在给定的时间和几乎任何日期最多可以包含50个名称。)

对于本例,我需要隐藏A列中没有JIM值且B列中的日期大于todays日期的所有行。(2014年5月4日)

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

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
任何帮助都会很好

谢谢

亚当

试试这个:

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
Sub Delete\u Name\u Date()
暗淡单元格作为范围
对于范围内的每个单元格(“A1:A15”)
带电池
.EntireRow.Hidden=_
(.Value“JIM”和CDate(.Offset(,1).Value)>日期)
以
下一个
端接头

此外,为了可靠性,我建议您使用
此工作簿.SheetName.Range(“A1:A15”)
代替
Range(“A1:A15”)

嘿,Simoco,谢谢您这么快回复我。代码在示例中运行良好,但在尝试在文档中使用它时,我似乎遇到了以下错误:(运行时错误'13'类型不匹配知道原因吗?文档中的数据与提供的示例相同。干杯有两个原因
1)
your range
range(“A1:B15”)
包含诸如
#N/A
#DIV/0
等错误<代码>2)您的日期以错误的日期格式存储,并且
CDate(.Offset(,1).Value)
会导致错误。尝试将
CDate(.Offset(,1).Value)
更改为
DateValue(.Offset(,1).Text)
嘿,Simoco今天回到这里,你说得对,修正了包含错误的范围,一切正常。你是个救生员。再次感谢
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