Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 宏删除excel中单元格包含特定文本的行_Vba_Excel - Fatal编程技术网

Vba 宏删除excel中单元格包含特定文本的行

Vba 宏删除excel中单元格包含特定文本的行,vba,excel,Vba,Excel,我是VBA新手,不太擅长编程,所以我希望在这里能得到一些帮助 事情是这样的: 我有一个excel表格,我需要扫描整行,删除C列和D列在同一行中有文本“NA”的行 提前谢谢 试试这个。您需要从末尾开始循环: Sub test() Dim wb As Workbook Set wb = ThisWorkbook Dim ws As Worksheet Set ws = wb.Sheets("sh_test") 'edit your sheet name

我是VBA新手,不太擅长编程,所以我希望在这里能得到一些帮助

事情是这样的:

我有一个excel表格,我需要扫描整行,删除C列和D列在同一行中有文本“NA”的行


提前谢谢

试试这个。您需要从末尾开始循环:

Sub test()


    Dim wb As Workbook
    Set wb = ThisWorkbook

    Dim ws As Worksheet
    Set ws = wb.Sheets("sh_test") 'edit your sheet name
    Dim lastrow As Long
    lastrow = ws.Range("C" & Rows.Count).End(xlUp).Row + 1 'maybe change letter of the column

    For i = lastrow To 2 Step -1
        If ws.Cells(i, 3).Value = "NA" And ws.Cells(i, 4).Value = "NA" Then
            ws.Rows(i).EntireRow.Delete     
        End If
    Next i 
End Sub

这是我以前用过的东西。这将应用筛选器,筛选列C和D中的NA,然后删除这些行(不包括标题)。请注意,只有在两列中都有NA时,才会删除该行。如果NA在C中,但不在D中,则不会删除该行

'Applies filter to the columns. You will want to adjust your range.
Cells.Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$D$6").AutoFilter Field:=3, Criteria1:="NA"
ActiveSheet.Range("$A$1:$D$6").AutoFilter Field:=4, Criteria1:="NA"

'Removes the rows that are displayed, except the header
Application.DisplayAlerts = False
ActiveSheet.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1).Rows.Delete
Application.DisplayAlerts = True

'Removes the filter
Cells.Select
Selection.AutoFilter

希望有帮助。

可能重复的“NA”是文本而不是空白单元格我编辑了答案,它有效吗?您可以调整范围以查找最后一行(更改列字母)和循环结束(更改为“2”表示其他内容)不要使用
Integer
进行行计数!Excel的行数超过了
Integer
所能处理的行数。建议使用VBA。我将使用“UsedRange”获取行。“Sheets(1).UsedRange.Rows”@JC Guidicelli不太可能