我的excel宏有问题。我正在使用Excel 2003.我的excel文档中有很多数据,我需要创建宏,以便我可以看到特定的数据。
此文档中的所有数据都是从另一个Excel文档导入的。我的意思是它不是价值而是公式。第一行设置数据标签,如姓名,姓名,培训名称等。下面的行充满了这些数据。
我想做的是: 1.按特定列标准过滤数据。 2.使用宏: - 搜索范围内的所有列(假设范围为G:BV),值为“1” - 当在列中的任何单元格中找到值“1”时,它保持不变 - 当找不到值“1”时,应隐藏列
我努力寻找一些关于我的问题,但没有成功。到目前为止,我想出了这段代码:
Sub FindHid()
Dim vFind
Dim rSearch As Range
On Error GoTo 0
vFind = 1
Application.ScreenUpdating = True
For i = 7 To 75
With ActiveSheet.Columns("G:G")
Set rSearch = .Find(vFind, LookIn:=xlValues, MatchCase:=False)
If rSearch Is Nothing Then
.EntireColumn.Hidden = True
Else
.EntireColumn.Hidden = False
End If
End With
Set rSearch = Nothing
Next i
End Sub
答案 0 :(得分:0)
我不会使用Find
方法。
尝试使用类似的东西:
NRows = ActiveSheet.UsedRange.Rows.Count
For R = 2 To NRows
If Rows(R).Hidden Then
答案 1 :(得分:0)
我的代码:
Sub HideNonOnes()
Dim rngToSearch As Range
Dim rng As Range
Dim rngToHide As Range
Set rngToSearch = Range("G2", Range("G2").End(xlDown).End(xlToRight))
For Each rng In rngToSearch.Columns
If Evaluate("ISNA(MATCH(1," & rng.Address & ",0))") Then
If rngToHide Is Nothing Then
Set rngToHide = rng.Range("A1")
Else
Set rngToHide = Union(rngToHide, rng.Range("A1"))
End If
End If
Next rng
If Not rngToHide Is Nothing Then
rngToHide.Columns.Hidden = True
End If
End Sub
在一次隐藏所有这些列之前构建范围rngToHide
。
答案 2 :(得分:0)
这不是我问题的最佳解决方案,但它有效:
Sub FindHid()
Dim vFind
Dim rSearch As Range
'On Error GoTo ErrorHandle
Application.ScreenUpdating = False
vFind = 1
Range("F1").Select
For i = 1 To 68
ActiveCell.Offset(0, 1).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Set rSearch = Selection.Find(vFind, LookIn:=xlValues, LookAt:= _
xlWhole, MatchCase:=True)
If rSearch Is Nothing Then
Selection.EntireColumn.Hidden = True
Else
Selection.EntireColumn.Hidden = False
End If
Next i
Application.ScreenUpdating = True
Range("A1").Select
End Sub