2017-08-14 96 views
0

如果满足条件,B列中的值小于100,我试图删除excel中的一行。我看到this并试图关注它,但我不是那种VBA知识渊博的人,所以我不知道该去哪里。如果值小于X,则在Excel中删除行

编辑 这是我到目前为止试过的代码,它不起作用。

Sub DeleteR() 
Dim myRow As Range 
Dim toDelete As Range 

For i = 2 To 5000 
    If Worksheets("PalCountPLTZR").Cells(i, 2) < "99" Then 
    Set myRow = Worksheets("PalCountPLTZR").Rows(i) 
    If toDelete Is Nothing Then 
     Set toDelete = myRow 
    Else 
     Set toDelete = Union(toDelete, myRow) 
    End If 
End If 
Next i 

End Sub 

我不知道为什么它不工作,但我想知道如果它看细胞是从查询。

+2

这里有一些其他的方法; https://stackoverflow.com/questions/33744149/code-in-vba-loops-and-never-ends-how-to-fix-this尝试这些,当你陷入困境,请带上你试过的代码,并解释你调整它,为什么它不工作。 –

回答

1

你可以用这个循环来检查和删除列“A”行:

Sub DeleteRows() 
    'get last row in column A 
    Last = Cells(Rows.Count, "A").End(xlUp).Row 
    For i = Last To 1 Step -1 
     'if cell value is less than 100 
     If (Cells(i, "A").Value) < 100 Then 
      'delete entire row 
      Cells(i, "A").EntireRow.Delete 
     End If 
    Next i 
End Sub 
+0

我试过这个,但它没有做任何事情。 – Lampoa

+0

其实,我找到了它,只是不需要围绕我正在寻找的价值“...”谢谢! – Lampoa

+0

您的值在'A'列吗? –

0

埃德表明你的.Delete部分,在后您链接:

克里斯·尼尔森的解决方案很简单,将工作做好。稍微 较短的办法是......

ws.Rows(RAND).Delete

除了这些知识,你就需要添加一个if语句,以显示标准进行删除,如:

If Cells(i,2)="x" Then 
    Rows(i).Delete 
    End If 

这种方法将使用一个循环为我,所以你需要阅读。

祝你好运,并在未来,把你已经尝试过的代码,特别是如果你已经尝试实现,如果你已经发现其他代码在线,所以我们可以尝试帮助解决问题。

+0

我已经添加了迄今我尝试过的代码。 – Lampoa

0

两件事情,

"99"应该只是99

而你从来没有在年底做删除。

Sub DeleteR() 
Dim myRow As Range 
Dim toDelete As Range 

For i = 2 To 5000 
    If Worksheets("PalCountPLTZR").Cells(i, 2) < 99 Then 
    Set myRow = Worksheets("PalCountPLTZR").Rows(i) 
    If toDelete Is Nothing Then 
     Set toDelete = myRow 
    Else 
     Set toDelete = Union(toDelete, myRow) 
    End If 
End If 
Next i 
If Not toDelete Is Nothing Then toDelete.EntireRow.Delete 
End Sub 
+0

我收到了一个错误消息“1004删除类范围失败的方法”与“toDelete.EntireRow.Delete” – Lampoa

+0

我没有得到这样的错误。我尝试了很多事情来尝试重现错误,但不能。检查以确保您没有错别字。 –

相关问题