我是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
有更好的想法吗?