Excel VBA条件删除宏问题

时间:2013-08-08 19:42:21

标签: excel-vba conditional vba excel

我有一个工作表,其中包含来自两个不同来源的一些合并数据。有一个共同/共享列 - 时间/日期。

列B-E包含列F-G时的数据,反之亦然。

我想要做的是,从F列开始,当我找到一个值时,我想去E列并一直工作直到找到一个值。此时,我想检查它的值 - 如果它小于4,那么我想删除最初触发E列查找的行。

然后,继续往下走。由于我过去发现的事情,我可能需要反过来(从底部开始,然后继续前进),但我还不确定。

所以,我现在正在处理的代码如下 - 它无法正常工作,我正在尝试对其进行故障排除以使其正常工作,但我遇到了困难。非常感谢您提供的任何信息/建议/帮助。

 Set myrange = Sheets("Test Sheet").Range("F2", Range("F" & Rows.Count).End(xlUp))
    For Each mycell In myrange
        rrow = rrow + 1
            If IsEmpty(mycell.Value) = False Then
                For j = rrow To 0 Step -1
                    If IsEmpty(mycell.Offset(j, -1)) = False And mycell.Cells(j, -1).Value < 4 Then
                    mycell.Cells(rrow, -1).EntireRow.Delete
                    GoTo line
                    Else

                    End If
                Next j
line:

        Else





        End If
    Next mycell

1 个答案:

答案 0 :(得分:1)

试试这个:

  Sub DeleteRows()

  Dim ColFRow As Long
  Dim ColERow As Long
  Dim ToDelete As Range

     For ColFRow = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        If (Not IsEmpty(Cells(ColFRow, 6).Value)) Then
           For ColERow = ColFRow To 0 Step -1
              If (Not IsEmpty(Cells(ColERow, 5).Value)) Then
                 If Cells(ColERow, 5).Value > 4 Then
                    If ToDelete Is Nothing Then
                       Set ToDelete = Cells(ColFRow, 1).EntireRow
                    Else
                       Set ToDelete = Union(ToDelete, Cells(ColFRow, 1).EntireRow)
                    End If
              End If
              Exit For
           End If
           Next ColERow
        End If
     Next ColFRow


     ToDelete.Delete


  End Sub