我有一张工作表,我需要删除G列上不包含短语“@”的所有行,直到列K.
这是我的样本数据
如果G列上的单元格直到K列不包含“@”,则删除行
请帮帮我..
答案 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)来创建单个文本字符串。然后我们在该连接字符串中搜索@
并相应地删除。
改变
到
或者,您可以创建包含以下公式的附加列:
FIND
用于识别前一个单元格中是否存在@
,如果不存在,则打印No
,如果有,则打印Yes
。现在您可以过滤这些元素(No
),选择范围(确保仅选择可见单元格),删除行并删除过滤器。
答案 1 :(得分:0)
您必须使用多个循环命令。首先循环遍历要处理的记录。这是伪代码的概述。
atdetector = "dunno_yet"
atdetector = "found"
循环遍历每一列后,如果atdetector = "dunno_yet"
,则永远找不到“@”。删除该行。重复,直到没有更多行。