【发布时间】:2021-08-06 17:57:51
【问题描述】:
如果 A 列包含“string1”,我想从 Excel 中删除行,如下表所示:
| A1 | B1 |
|---|---|
| string1 string2 | string3 string4 |
| string5 string6 | string7 string8 |
我正在使用以下代码:
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), LCase("string1"))
If pos > 0 Then
rng.Item(i).EntireRow.Delete
End If
Next i
End Sub
问题在于,如果 A 列包含“string11”而不是“string1”,它也会删除该行。 请问有什么建议吗? 谢谢
【问题讨论】:
-
if LCase(rng(i).text) = "string1" then -
但最好使用
.Value,而不是.Text。 -
@BigBen 为什么
.Value更好? -
stackoverflow.com/questions/17359835/… 好吧,这支持
.Value2,但无论如何,第一段解释了.Text的潜在陷阱。如果 OP 的数据都是字符串,可能并不重要,但我想我倾向于避免.Text。 -
尝试使用Split()或RegExp