2014-04-02 79 views
0

我有約20000行按日期排序的數據。有時,時間不匹配(即一個時間序列比另一個時間序列更頻繁)。如果時間與列A的時間不匹配,我想刪除從D列開始的行。如果日期不匹配,則刪除一行

我寫了下面的代碼,但出現錯誤(運行時錯誤1004)。我不確定問題在哪裏。我認爲這可能是WorksheetFunction。

Dim rng As Range 
Dim c As Variant 
Dim myVal As Boolean 

Sub rectifyData() 
    Set rng = Range("A4:A20459") 
    For Each c In rng.Rows 
     myVal = xlApp.WorksheetFunction.If(c = ActiveSheet.Range(c).Offset(0, 4), 0, 1) 
     If (myVal = 1) Then 
      ActiveSheet.Range(c).Offset(0, 4).Rows.Delete 
      myVal = 0 
     End If 
    Next c 
End Sub 
+0

可以簡單地copyPaste一些示例數據添加到一個新的與您的代碼出類拔萃,看看那張熱潮。對於1004,可能有多個問題,很難找出沒有運行你的代碼。謝謝 –

回答

1

也許:

Sub RowKiller3() 
    Dim rDel As Range 
    Dim r As Range, rBig As Range 

    Set rBig = Range("A4:A20459") 
    Set rDel = Nothing 
    For Each r In rBig 
     If r.Value <> r.Offset(0, 3) Then 
      If rDel Is Nothing Then 
       Set rDel = r 
      Else 
       Set rDel = Union(rDel, r) 
      End If 
     End If 
    Next r 

    If Not rDel Is Nothing Then 
     rDel.EntireRow.Delete 
    End If 

End Sub 
+1

是的,這非常接近我所需要的。我不得不稍微調整它,但它工作。謝謝 – user3488564