遇到负值后删除数据(行)

时间:2015-05-07 21:56:09

标签: vba excel-vba rows excel

我有以下问题:

在工作表中,有一系列拉伸试验数据。

最多3k(给予或接受)点只存在正日期值(我需要绘制的数据,并进行统计分析)。之后出现一些负面因素,并且它们再次出现一些正值可以被认为是噪声。 e.g,

 Line         A B C D
  1k          1 2 3 4
  2k          5 6 7 8 
  3k          9 1 2 3
  4k          1 2 3 -3
  5k          1 1 1 1

我想在第一个负值之后删除/清除行。 (在这种情况下,从第4k行到最后一行)。

我有一些代码来识别第一个负值出现的行。

Dim flag As Boolean
Dim aux_linha As Integer
Dim i As Integer

flag = False
i = 3
While i < 20000 And flag = False

' 5 is the column index from which to remove the noisy data

    If Cells(i, 5) < 0 Then 

        flag = True
        aux_linha = i
    End If
    i = i + 1
Wend

Cells(4, 10) = aux_linha 'store the value

我尝试做一个循环来删除行,但它需要永远

For i = 1 To 10000 'excessive number of lines
    Rows(aux_linha).Row.Delete

Next

任何人都可以帮忙解决这个问题吗?!

1 个答案:

答案 0 :(得分:0)

创建一个范围,然后删除整个范围:

Range(aux_linha & ":" & ActiveSheet.UsedRange.Rows.Count).Delete

注意:您也可以通过跳过退出标记测试和手动递增来大幅简化循环,只需使用For循环并在达到值时退出:

For i = 3 To 20000
    If Cells(i, 5) < 0 Then 
        aux_linha = i
        Exit For
    End If
Next i