我有一个包含390行的Excel文件。在第五列只有两个字符串。它是"是"或"否"。所以,我试图删除行,如果第五列中的单元格包含" NO"使用VBA。我可以通过使用过滤器,然后使用宏来删除隐藏的行,但我想找到一种方法在VBAs中执行它而不使用过滤器。我想更好地学习它并保留文件以备将来使用。
我曾尝试使用我在堆栈中找到的一些脚本,但它们不起作用。他们中的大多数是整数而不是字符串。我试过这个,但它不起作用:
tv.setText(Html.fromHtml("\\u27A1");
我尝试为列添加第二个For,但它也没有用。我想找到一个我已经写过的解决方案。我或许可以在互联网上找到其他脚本,但我想根据这段代码使其工作。
答案 0 :(得分:0)
http://analysistabs.com/vba/delete-row-if-cell-contains-string-excel-macro-example-code/
此解决方案有效
也许您不是作为模块插入的?
答案 1 :(得分:0)
删除行的另一种方法,可能会更快一点(我没有测试过,所以不要引用我) - 找出哪些行需要先删除,联合范围并一次性删除它们。
Sub Delete_Rows_With_Specific_String_In_Cell()
Dim myRow As Long
Dim myCounter As Long
Dim rngDeletion As Range
myRow = 390
With ThisWorkbook.Worksheets("Sheet1")
For myCounter = 1 To myRow
If .Cells(myCounter, 5).Value = "NO" Then
If rngDeletion Is Nothing Then
Set rngDeletion = .Rows(myCounter)
Else
Set rngDeletion = Union(rngDeletion, .Rows(myCounter))
End If
End If
Next
End With
rngDeletion.Delete
End Sub
注意:我在代码中使用了 With 关键字,以确保我始终引用正确的工作表。 有关 With ... End With 的解释,请参阅https://msdn.microsoft.com/en-us/library/wc500chb.aspx。