VBA如果值小于指定值,则删除整行 – 删除错误的行

我试图运行一个小的macros,它search工作表的S列,如果S列中的值小于0.501,它将删除该行。

我正在运行的代码删除了一些行,但似乎这样做是随机的,而不是基于s中的单元格值。 任何人都可以看到我的错误来自哪里?

Sub sort_delete_500cust() Dim WS_Count As Integer Dim I, K As Integer Dim endrow As Long ' Set WS_Count equal to the number of worksheets in the active ' workbook. WS_Count = Workbooks("Standard.xlsx").Worksheets.count ' Begin the loop. For I = 1 To WS_Count With Worksheets(I) endrow = .Range("a" & .Rows.count).End(xlUp).row ' only works if cells are unmerged Range("A2:v2" & endrow).Sort _ Key1:=Range("s2"), Order1:=xlDescending 'key is the sort by column For K = 2 To endrow If .Cells(K, 19).Value < 0.501 Then .Range("S" & K).EntireRow.Delete End If Next K End With Next I End Sub 

干杯!

你需要以相反的顺序遍历你的K循环。 否则,行将被删除,因为它们被删除操作向上移动,并且K值递增。

 For K = endrow To 2 Step -1 If CDec(.Cells(K, 19).Value) < CDec(0.501) Then .Range("S" & K).EntireRow.Delete End If Next