通过在特定单元格上使用标准来隐藏行太慢

时间:2014-01-30 03:58:43

标签: vba excel-vba filtering excel

我是VBA的新手,我有一个要求,我有一张包含超过5000行的数据。行可能会增加和减少,因此它不是固定值。现在我有20列,我有一个用户输入单元格,他将在单元格A3 5中输入范围,单元格A5为9。

我需要做的是逐行过滤,匹配范围内的值并隐藏它们。复杂的是匹配值必须只查看20列中的5列。当任何一个单元格值与5列匹配时,我不应该隐藏行,其余的应该被隐藏。

示例:

A          B     C       D        E       F      G       H        I      J
             2014.Jan             2014.FEB                 2014.MAR     
         value1 value2  value3  value1  value2  value3  value1  value2  value3
Material1   5   10      15        20     25     30      35       40     45
Material2   7   8        9        10     11     12      13       14     15
Material3   2   3        4         5     6      7       8        9      10

当用户输入值0到9时。

然后我需要检查D,G,J列并检查数字是否介于0到9之间(如果有的话) 匹配然后不要隐藏行。

输出应为

A          B     C       D        E       F      G       H        I      J
             2014.Jan             2014.FEB                 2014.MAR     
         value1 value2  value3  value1  value2  value3  value1  value2  value3

Material2   7   8        9        10     11     12      13       14     15
Material3   2   3        4         5     6      7       8        9      10

我尝试使用下面的代码作为解决方案的示例,但是它需要很长时间才能循环每个字段。

Application.EnableEvents = False
LastRow = Cells(Cells.Rows.Count, "H").End(xlUp).Row

On Error Resume Next

For Each c In Range("M21:M" & LastRow)
    If c.value >= Range("L10").value And c.value <= Range("N10").value Then
        c.EntireRow.Hidden = True
    Else
        c.EntireRow.Hidden = False
    End If
Next

On Error GoTo 0
Application.EnableEvents = True

有更好的想法吗?

0 个答案:

没有答案