我试图保留具有特定单词的行并删除其余行,但我有两个问题。我不是Excel VBA的专家,所以我需要你的帮助。
我试图保留包含多个文本的行。(如何添加文本1,文本2,文本3)。在下面的代码中,它只有一个单词(文本)。
隐藏了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
提前感谢您的帮助
答案 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