删除row.cell具有VBA特定字符串的行

时间:2015-05-22 10:07:30

标签: string excel excel-vba delete-row vba

我有一个包含390行的Excel文件。在第五列只有两个字符串。它是"是"或"否"。所以,我试图删除行,如果第五列中的单元格包含" NO"使用VBA。我可以通过使用过滤器,然后使用宏来删除隐藏的行,但我想找到一种方法在VBAs中执行它而不使用过滤器。我想更好地学习它并保留文件以备将来使用。

我曾尝试使用我在堆栈中找到的一些脚本,但它们不起作用。他们中的大多数是整数而不是字符串。我试过这个,但它不起作用:

tv.setText(Html.fromHtml("\\u27A1"); 

我尝试为列添加第二个For,但它也没有用。我想找到一个我已经写过的解决方案。我或许可以在互联网上找到其他脚本,但我想根据这段代码使其工作。

2 个答案:

答案 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