excel - Excel VBA - 如果单元格包含 string1 或 string2 或 string3 等,则删除整行
问题描述
如果该行包含特定字符串,我想删除该行,但我需要为许多字符串多次执行此操作。
更具体地说,我的电子表格约为 3000 行和 30 列,但这每天都在变化。第一列,也是我唯一关心的,是网络上一个节点的名称,如果该节点以某个词开头或包含某个词(香蕉、苹果、橙子、菠萝),我需要删除整行并删除所有内容向上移动
这就是我到目前为止在@chrisneilsen 的帮助下所拥有的......
这正是我需要的,但是那里有我不需要的代码,或者可以清理吗?我已经混合了一些人的答案和建议,我想知道我是否创造了一个怪物......
Sub takeOutTheTrash()
Dim rng As Range
Dim ItemToDelete As Variant
Dim ItemsToDelete As Variant
ItemsToDelete = Array("Apple", "banana", "skittles", "grapes", "ORANGES")
Set rng = ActiveSheet.UsedRange
For Each ItemToDelete In ItemsToDelete
deleteGarbage rng, ItemToDelete
Next
End Sub
Sub deleteGarbage(rng As Range, Value As Variant)
Dim pos As Long
Dim rw As Long
Dim col As Long
For rw = rng.Rows.Count To 1 Step -1
For col = 1 To rng.Columns.Count
If InStr(LCase(rng.Cells(rw, col).Value2), LCase(Value)) > 0 Then
rng.Rows(rw).EntireRow.Delete
Exit For
End If
Next col
Next rw
End Sub
解决方案
将 Delete Rows 例程抽象为单独的 Sub,并将您的值传递给它
就像是
Sub testIt()
Dim rng As Range
Set rng = ActiveSheet.UsedRange
deleteGarbage rng, "Bananas"
deleteGarbage rng, "SomethingElse"
End Sub
' To delete many items, create a variable that contains the items and iterate that.
' Eg a Range, an Array, or a Collection/Dictionary
Sub testItMany()
Dim rng As Range
Dim ItemsToDelete As Some Collection Object or Array
Dim ItemToDelete As Variant
Set rng = ActiveSheet.UsedRange
For Each ItemToDelete In ItemsToDelete
deleteGarbage rng, ItemToDelete
Next
End Sub
Sub deleteGarbage(rng as Range, Value as Variant)
Dim pos As Long
Dim rw As Long
Dim col As long
For rw = rng.Rows.Count To 1 Step -1
For col = 1 to rng.Columns.Count
If InStr(LCase(rng.Cells(rw, col).Value2), LCase(Value)) > 0 Then
rng.Rows(rw).EntireRow.Delete
Exit For
End If
Next col
Next rw
End Sub
如果这太慢,您可以进行优化以加快速度(例如使用变体数组)
推荐阅读
- tensorflow - 变分自动编码器损失未显示正确?
- javascript - 如何在 JS/TS 中将数据设置为对象?
- c# - XML 文件被其他应用程序损坏
- java - 如何使用spring boot抛出自定义异常而不是500
- python - valueerror:无法将字符串转换为浮点熊猫
- imagemagick - 复合在 imagemagick7 与 imagemagick6 中不传输颜色
- firebase - 在 Firestore SDK 代码段中找不到 databaseURL
- php - Laravel - 变量为空但不为空?
- python - 如何按类别分组,然后使用 Pandas 计算单词的频率
- android - 当适配器正在生成视图并且用户在另一个片段上时,小部件为空