excel - 根据多列和多个条件删除行
问题描述
我有一个excel表,我正在尝试。根据以下条件编写 VBA 代码以从 excel 表中删除行:
如果 A 列包含字符串“string1”和“string2”。
或
如果 B 列包含字符串“string3”或“string4”
我使用以下代码:
Sub DeleteRows()
Dim rng As Range
Dim pos As Integer
Set rng = ActiveSheet.UsedRange
For i = rng.Cells.Count To 1 Step -1
pos = InStr(LCase(rng.Item(i).Value), "string1"))
If pos > 0 Then
rng.Item(i).EntireRow.Delete
End If
Next i
End Sub
但是如果单个字符串位于任何列中,它只会删除行,并且我无法指定要搜索的列名。
任何帮助表示赞赏。谢谢,
解决方案
问题在于您的循环 - 您正在循环遍历Item
范围中的每个,而不是每一行
试试下面的
Sub DeleteRows()
Dim rng As Range
Dim rownum As Long
Set rng = ActiveSheet.UsedRange
For rownum = rng.rows.Count To 1 Step -1
If LCase(Rng.Cells(rownum, 1) Like "*String1*" And _
LCase(rng.Cells(rownum, 1) Like "*String2*" Or _
LCase(rng.Cells(rownum, 2) Like "*String3*" Or _
LCase(rng.Cells(rownum, 2) Like "*String4*" Then
rng.Cells(rownum, 1).EntireRow.Delete
End If
Next
End Sub
推荐阅读
- sql - 是否可以从 Access 到 QuickBooks 逐行发送信息?
- c++ - 为什么 static_cast 不使用转换运算符来指向 const 的指针?
- java - 如何在屏幕中心创建一个透明的弯曲透明矩形?
- go - 尽管我使用的是界面,但如何解决导入周期不允许的问题?
- c# - UnitOfWork 与存储库和实体框架
- laravel - Laravel 为急切的加载关系获取排序结果
- elasticsearch - elasticsearch加权随机分布
- java - Java - 复制从数据库中检索到的列表的一部分
- python - 使用 NumPy 数组到 tf.data.Dataset
- javascript - React Native 模态样式