如果单元格不包含特定值,请在Excel中删除行

我有一个工作表,我需要删除列G上的所有不包含短语“@”的行,直到K列。

这是我的样本数据

http://i.stack.imgur.com/MfqUM.png

如果列G上的单元格直到列K不包含“@”,则删除行

请帮帮我..

你将不得不使用几个循环命令。 首先循环你想要处理的logging。 这是一个伪代码的概述。

  • 循环遍历要处理的列,G到K
  • 以stringforms读取单元格的值
  • 初始化variablesatdetector = "dunno_yet"
  • 遍历string的每个字符
  • 如果有任何字符=“@”; 那么atdetector = "found"

循环遍历每列后,如果atdetector = "dunno_yet" ,那么“@”从来没有find。 删除行。 重复,直到没有更多的行。

从第2行进行以下macros扫描,并删除第2-5列中不包含@

 Sub Macro1() CurRow = 2 While CurRow < Application.WorksheetFunction.CountA(Range("A:A")) + 1 If InStr(1, _ Sheet1.Cells(CurRow, 2) _ & Sheet1.Cells(CurRow, 3) _ & Sheet1.Cells(CurRow, 4) _ & Sheet1.Cells(CurRow, 5), _ "@", vbTextCompare) Then Else Sheet1.Rows(CurRow & ":" & CurRow).Delete Shift:=xlUp CurRow = CurRow - 1 End If CurRow = CurRow + 1 Wend End Sub 

使用Instr ,我们连接感兴趣的列(在上面的示例代码中为2-5)来创build单个string。 然后我们在这个连接的string中search@并相应地删除。

它改变

在这里输入图像说明

在这里输入图像说明


或者,您可以创build包含以下公式的附加列:

在这里输入图像说明

FIND用于标识@是否存在于前面的一个单元格中,如果不存在,则输出No如果Yes ,则输出是。 现在可以过滤这些元素( No ),select范围(确保只有可见的单元格被选中),删除行并删除filter。