簡體   English   中英

如果特定工作表中的單元格等於特定值,則刪除該行

[英]If cells in specific sheet equal a specific value, then delete the row

我正在檢查范圍內的所有單元格。 如果單元格的值等於0(該值由公式生成),則刪除該行。

Sub CleanJunk()
    For Each c In Worksheets("testsheet").Range("B33:B533").Cells
        If c.Value = "0" Then Rows(c.Row).EntireRow.Delete
    Next
End Sub

現在,該模塊可以正常運行。 它什么也沒做。 沒有任何行被刪除或以任何方式受到影響。

您尚未限定Rows調用,並且需要向后循環:

Sub CleanJunk()
  Dim n as long
    for n = 533 to 33 step -1
    If Worksheets("testsheet").Cells(n, "B").Value2 = 0 Then Worksheets("testsheet").Rows(n).EntireRow.Delete
    Next
End Sub

這里的關鍵是值是由公式生成的。 它可能包含浮點錯誤。

將值與字符串"0"比較也不是很好的編碼-蘋果與蘋果而不是桔子!

要消除浮點錯誤,請使用`ROUND(Num,小數位數),其中小數位數= 0

比較結果為0。

Option Explicit 'so you don't confuse your variables
Sub CleanJunk()
Dim c as range
    For Each c In Worksheets("testsheet").Range("B33:B533").Cells
        'compare values rounded to integer with 0
        If Round(c.Value, 0) = 0 Then c.EntireRow.Delete
    Next c 'it pays to be explicit
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM