macros来检查单元格区域的某个值来隐藏行,如果该范围内的任何单元格包含该值?

以下是我到目前为止的代码:

Sub Compare() Sheets("SCR SYSTEM SPECS").Select Sheets("SCR SYSTEM SPECS").Copy Dim WS As Excel.Worksheet Dim ColumnCount As Long Dim I As Long Dim Cell As Excel.Range Set WS = ActiveSheet 'adjust as necessary ColumnCount = 12 'adjust as necessary With WS For I = ColumnCount To 1 Step -1 Set Cell = .Cells(3, I) If Cell.Value = False Then Cell.EntireColumn.Delete End If Next I End With ActiveSheet.Shapes.Range(Array("Button 1", "Check Box 1", "Check Box 2", _ "Check Box 3", "Check Box 4", "Check Box 5", "Check Box 6", "Check Box 7", _ "Check Box 8", "Check Box 9", "Check Box 10", "Check Box 11")).Select Selection.Delete End Sub 

我所需要的是一个macros,它可以遍历整个范围B4:L4,并检查每个单元格是否以X结尾。 这一行将包含以下数字/文本的任意组合:1300,2000,2000X,2500,2500X,3000,3000X,4500,6000,7000,9000。我需要说的是,如果这些单元格都不以X结尾,删除某些行。 我一直在尝试使用If Not Like“* X”失败。 下面是我已经尝试过的代码,这是不成功的。 任何帮助深表感谢。

 Dim MyCell, Rng As Range Set Rng = Sheets("SCR SYSTEM SPECS").Range("B4:L4") For Each MyCell In Rng If Not MyCell Like "*X" Then '''''will only do something if the cell is not blank Rows("4:18").Select Selection.EntireRow.Hidden = True 'Else '''''if cell is equal to blank 'Rows("4:18").Select 'Selection.EntireRow.Hidden = False End If Next 

这是我试图用来隐藏包含所有0的行的改变的代码,但它是隐藏行,无论它们包含全0或如果他们包含2列与0然后列4与4.请指教。

 Dim MyCell2, Rng2 As Range Set Rng2 = Sheets("SCR SYSTEM SPECS").Range("B36:L36") For Each MyCell2 In Rng2 If Right(Trim(MyCell2.Value), 1) = "0" Then Range("36:36").Select Selection.EntireRow.Hidden = True End If Next 

LIKE函数是棘手的,可能不是你想要的,因为它是模糊的,反正。

使用RIGHTfunction:

 Sub TestThis() Dim MyCell, Rng As Range Set Rng = Sheets("SCR SYSTEM SPECS").Range("B4:L4") For Each MyCell In Rng If Right(Trim(MyCell.Value),1) = "X" Then '''''will only do something if the cell is not blank Rows("4:18").EntireRow.Hidden = True 'Else '''''if cell is equal to blank 'Rows("4:18").EntireRow.Hidden = False End If Next End Sub 

我也修改了上面的代码,以避免Selection ,这是99%的时间不必要的。

因为你正在寻找一个“如果没有这些单元格包含…”我会build议下面的附加修订,一旦条件满足Exit循环。

 Sub TestThis() Dim MyCell, Rng As Range Set Rng = Sheets("SCR SYSTEM SPECS").Range("B4:L4") For Each MyCell In Rng If Right(Trim(MyCell.Value),1) = "X" Then '''''will only do something if the cell is not blank Rows("4:18").EntireRow.Hidden = True Exit For '## Exit the loop once the condition is met ##' 'Else '''''if cell is equal to blank 'Rows("4:18").EntireRow.Hidden = False End If Next End Sub