我有一个包含数百行的Excel文件,我想要删除列中的所有行" L"其中的单词" SAGI"据说(它代表我工作的公司中的一种文书工作),在同一个单元格中通常有一个关于如何处理SAGI的小描述,因此过滤不是一种选择,因为描述太多。
我想创建一个可以在每次单击时找到并删除这些行的宏。
我发现本教程很有帮助 http://blog.contextures.com/archives/2010/06/21/fast-way-to-find-and-delete-excel-rows/但我无法将其记录为宏,因此我尝试在VBA中对其进行编程。
有一条评论说明如何为它创建一个VBA模块,看起来像这样 Capture 但我最终得到了这个错误,如果我调试它,它会指向第二行。
这是我第一次在VBA中编写一些略显复杂的编曲,但我不知道自己做错了什么
答案 0 :(得分:0)
您可以尝试使用此VBA功能:
Sub RemoveRows(value As String)
Dim row As Long
row = 1
Do While row <= ThisWorkbook.ActiveSheet.Range("L:L").CurrentRegion.Rows.Count
If InStr(1, ThisWorkbook.ActiveSheet.Cells(row, 12).Text, value, vbTextCompare) > 0 Then
ThisWorkbook.ActiveSheet.Cells(row, 12).EntireRow.Delete
Else
row = row + 1
End If
Loop
End Sub
Sub test()
RemoveRows "SAGI"
End Sub
答案 1 :(得分:0)
尝试一下:
Sub SAGIKiller()
Dim N As Long, ToBeKilled As Range
Dim i As Long
N = Cells(Rows.Count, "L").End(xlUp).Row
For i = 1 To N
If InStr(1, Cells(i, "L").Value, "SAGI") > 0 Then
If ToBeKilled Is Nothing Then
Set ToBeKilled = Cells(i, "L")
Else
Set ToBeKilled = Union(ToBeKilled, Cells(i, "L"))
End If
End If
Next i
If Not ToBeKilled Is Nothing Then
ToBeKilled.EntireRow.Delete
End If
End Sub