基于2列中的值删除行,除非另一列具有特定的文本字符

所以我有一个6列的表,它有头。 在F列中有以mm – dd – yy格式表示的date。 在B栏中有一些参考订单优先级的数字,范围从-999,999到473,700。 在列A中有以4005,7009等数字forms表示的Workcenter数字。一些SPECIAL工作中心的名称以R结尾。我需要删除符合以下条件的所有行: – 列B中大于0 – 分配今天date在F栏 – 在A栏中的工作中心的末尾没有R

这是我迄今为止,但它仍然删除R工作中心(如1027R)

我已经看过这个网站上的许多不同的文章,有些使用AutoFilter工具,有些使用如果价值是这样的,然后增加这个variables,并添加所有variables,以检查行是否应该删除,但这是我得到的最干净到目前为止的代码,它不能正常工作。 还有很多关于删除重复的文章,但这不是我的问题在这里。

Sub CleanData() Dim lr As Long, i As Long With Sheet3 lr = Application.Max(.Cells(Rows.Count, 1).End(xlUp).Row, _ .Cells(Rows.Count, 2).End(xlUp).Row, _ .Cells(Rows.Count, 6).End(xlUp).Row) For i = lr To 1 Step -1 If Not InStr(1, ActiveSheet.Cells(i, 2).Value, "R") > 0 And _ .Cells(i, 2).Value > 0 And _ .Cells(i, 6).Value = Date Then .Rows(i).EntireRow.Delete End If Next i End With 

结束小组

 Sub CleanData() Dim lr As Long, i As Long With Sheet3 lr = Application.Max(.Cells(Rows.Count, 1).End(xlUp).Row, _ .Cells(Rows.Count, 2).End(xlUp).Row, _ .Cells(Rows.Count, 6).End(xlUp).Row) For i = lr To 1 Step -1 If Not Application.Right(.Cells(i, 1).Value, 1) = "R" Then If .Cells(i, 2).Value > 0 And .Cells(i, 6).Value = Date Then .Rows(i).EntireRow.Delete End If End If Next i End With 

您的问题似乎是InStr正在评估B列的 If Not InStr(1, ActiveSheet.Cells(i, 2).Value, "R") 。 我只更改为一个嵌套,如果我的理智,它更容易读…如果您有任何更多的问题,我会认为它可能与Date格式。