![](/img/trans.png)
[英]VBA/EXCEL Split excel file on specific row if cells value are not equal
[英]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.