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

时间:2014-03-27 20:31:15

标签: excel vba excel-vba

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

这是我的样本数据

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

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

请帮帮我..

2 个答案:

答案 0 :(得分:0)

以下宏从第2行扫描并删除第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)来创建单个文本字符串。然后我们在该连接字符串中搜索@并相应地删除。

改变

enter image description here

enter image description here


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

enter image description here

FIND用于识别前一个单元格中是否存在@,如果不存在,则打印No,如果有,则打印Yes。现在您可以过滤这些元素(No),选择范围(确保仅选择可见单元格),删除行并删除过滤器。

答案 1 :(得分:0)

您必须使用多个循环命令。首先循环遍历要处理的记录。这是伪代码的概述。

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

循环遍历每一列后,如果atdetector = "dunno_yet",则永远找不到“@”。删除该行。重复,直到没有更多行。