保留具有特定文本的行并删除所有工作表中的所有其余行

我试图保留特定的单词行,并删除其余的,但我有两个问题。 我不是Excel VBA的专家,所以我需要你的帮助。

  1. 我试图保留包含多个文本的行(如何添加文本1,文本2,文本3)。 在下面的代码中只有一个字(文本)。

  2. 有27页,一些表被隐藏,每张表中的所有数据都是表格格式。 下面的代码出于某种原因,当我尝试使用表格格式时出错。 它适用于非表格格式。

我怎样才能解决这两个问题在这个代码?

Sub WorksheetLoop() Dim c As Integer Dim n As Integer c = ActiveWorkbook.Worksheets.Count For n = 1 To c Step 1 Last = Worksheets(n).Cells(Rows.Count, "A").End(xlUp).Row For i = Last To 1 Step -1 If (Worksheets(n).Cells(i, "A").Value) <> "Text" Then Worksheets(n).Cells(i, "A").EntireRow.Delete End If Next i Next n End Sub 

在此先感谢您的帮助

看起来你从来没有分配过一些variables..

这应该做到这一点,并停止在标题行(第1行)之前:

 Sub WorksheetLoop() Dim WS As Worksheet Dim iBottomRow As Long, iRow As Long For Each WS In ActiveWorkbook.Sheets iBottomRow = WS.Range("A" & Range("A" & WS.Rows.Count).End(xlUp).Row).Row For iRow = iBottomRow To 2 Step -1 If WS.Range("A" & iRow).Value <> "Text" Then WS.Range("A" & iRow).EntireRow.Delete End If Next Next End Sub 

如果您只在列“A”中search值,请尝试此操作。

 Sub WorksheetLoop() Dim i As Long, L As Long Dim WS As Worksheet For Each WS In ThisWorkbook.Worksheets L = WS.Cells(WS.Rows.Count, "A").End(xlUp).Row For i = 1 To L If WS.Cells(i, "A").Value <> "Text" And L > 0 Then WS.Cells(i, "A").EntireRow.Delete i = i - 1 L = L - 1 End If Next i Next WS End Sub