如果行的一个单元格以某个string开头,则VBA Excel删除行

我有2列包含一些组件的规格。 基本上,如果两个指定列的首字母不同于S,我想要删除整行。

我的桌子看起来像这样

在这里输入图像描述

我想删除每一行,如果列“从设备”和“到设备”开始与G或C(或者,更具体地说,如果任何列“从”和“到”S开始,保持整个行),我的代码如下:

Sub FilterData2() Dim rcount As Long With Sheet3 rcount = Range("B" & Rows.Count).End(xlUp).Row With Range("E1:E" & rcount) If Application.WorksheetFunction.CountIf(Columns(5), "C*") > 0 Then .AutoFilter field:=1, Criteria1:="C*" .Offset(1).Resize(.Rows.Count - 1, 1).EntireRow.Delete .AutoFilter End If If Application.WorksheetFunction.CountIf(Columns(5), "G*") > 0 Then .AutoFilter field:=1, Criteria1:="G*" .Offset(1).Resize(.Rows.Count - 1, 1).EntireRow.Delete .AutoFilter End If End With End With End Sub 

但是,这只适用于列E,这意味着如果列G包含一个单元格开始于S和列E doesnt,该行仍然会被删除,我想保留该行。

有什么build议么 ? 谢谢!

你可以在VBA中结合你的if语句。

使用AND修饰符:

 If Application.WorksheetFunction.CountIf(Columns(5), "C*") > 0 AND Application.WorksheetFunction.CountIf(Columns(5), "G*") > 0 Then 

同样,你可以使用一个OR修饰符:

 If Application.WorksheetFunction.CountIf(Columns(5), "C*") > 0 OR Application.WorksheetFunction.CountIf(Columns(5), "G*") > 0 Then 

要将其应用到您的代码中,您只想查看单元格的内容是从S开始还是从以下开始:

 Dim rcount As Long Dim i As Integer Dim strE, strG As String With Sheets("Sheet3") rcount = .Range("B" & Rows.Count).End(xlUp).Row For i = rcount to 2 Step -1 strE = Left(.Cells(i, "E").Value, 1) strG = Left(.Cells(i, "G").Value, 1) If strE = "S" Or strG = "S" Then Else .Rows(i).EntireRow.Delete End If Next i End With 

这应该显着简化过程。