我正在尝试弄清楚如何在 Excel 2013 中删除单元格内容以数字开头的行。
例如,在 HI 列中有多个条目,一些以字母开头,一些以数字开头。我想删除 H 列中单元格内容以数字开头的所有行。
如能得到任何指导/建议我将不胜感激!
好的,我创建了一些 VBA 代码,它似乎可以在一张纸上运行:
Sub Macro_01()
Dim L As Long, i As Long
L = Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
If Left(Cells(i, "F"), 1) Like "[0-9]" Or Cells(i, "F") = "" Then
Rows(i).Delete
End If
Next
End Sub
我正在尝试弄清楚如何让这个功能在工作簿中的所有 284 张工作表上工作。我试过 Do/Loop,但它只是无休止地运行(并且停止响应)。因为我知道有多少张工作表,所以我需要在代码中输入一个简单的命令吗?
答案1
这是如何工作的?(我假设你发布的代码本身按预期工作,只需要运行它全部頁面。
Sub Macro_01()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim L As Long, i As Long
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
L = .Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
If Left(.Cells(i, "F"), 1) Like "[0-9]" Or .Cells(i, "F") = "" Then
.Rows(i).Delete
End If
Next
Next ws
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
只需循环遍历每张表,确保重置最后一行变量。然后关闭计算/屏幕更新,直到最后。请注意,如果您有 200 多张表,这确实可能需要一些时间。
最后,请确保首先在数据副本上运行此操作,因为您可能知道,无法撤消宏。
答案2
感谢您迄今为止的帮助,我想我已经解决了它:
Sub Macro_01()
ActiveSheet.Next.Select
Do
Dim L As Long, i As Long
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
L = Cells(Rows.Count, "F").End(xlUp).Row
For i = L To 1 Step -1
If Left(Cells(i, "F"), 1) Like "[0-9]" Or Cells(i, "F") = "" Then
Rows(i).Delete
End If
Next
Next ws
If ActiveSheet.Index <> Sheets.Count Then
ActiveSheet.Next.Select
Else
Exit Do
End If
Loop
End Sub