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

时间:2017-05-04 14:14:03

标签: excel vba excel-vba

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

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

  2. 隐藏了27张纸和一些纸张,每张纸的所有数据都是表格格式。由于某种原因,下面的代码在我尝试使用表格格式时会出错。它可以在它应用于非表格格式时起作用。

  3. 如何在此代码中解决这两个问题?

    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
    

    提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

看起来你从未分配过一些变量..

这应该这样做并在标题行(第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

答案 1 :(得分:0)

如果您只搜索“A”列中的值,请尝试此操作。

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