2016-08-12 45 views
1

我有一個範圍,其中列A和B正在進行比較列CD。 該數據從數據透視表中拉出,因此行的長度可能會有所不同。我有我的公式從數據透視表通過行130拉。我想要做的是刪除任何單元格,其中A和B都是空的或C和D都是。不幸的是,它只是刪除一些多餘的單元然後停止。使用VBA刪除具有零點的單元格

下面是我目前使用的代碼(任何建議,將不勝感激)

Dim i As Long 

For i = 6 To 200 
     If Cells(i, 1) = "0" And Cells(i, 2) = "0" Then 
      Cells(i, 1).Delete Shift:=xlUp 
      Cells(i, 2).Delete Shift:=xlUp 
     Else 
      If Cells(i, 3) = "0" And Cells(i, 4) = "0" Then 
       Cells(i, 3).Delete Shift:=xlUp 
      Cells(i, 4).Delete Shift:=xlUp 
      End If 
     End If 

Next i 
+1

嘗試'對於i = ActiveSheet.UsedRange.Rows.Count至6步驟-1' – user1274820

+0

它不是讓所有的人,因爲你每次你刪除一行時跳過一個 - 你需要遞減計數器的或像我原來的評論 – user1274820

回答

1

正如我在我的評論說,你需要逆向操作或刪除單元格時,你遞減計數器。

For i = 200 to 6 Step -1很可能您需要更改。

試想一下,數據是這樣的:

Row Data 
1  5 
2  0 <-- Delete Row 2 [i = 2] 
3  0 
4  7 

如果我刪除行2,行3班起來,我的櫃檯移動到第3行跳過它。

Row Data 
1  5 
2  0 <-- Skipped 
3  7 <-- Row 3 Not Zero [i = 3] 

如果反向工作,它的行爲,它應:

Row Data 
1  5 
2  0  
3  0 <-- Delete Row 3 [i = 3] 
4  7 

Row Data 
1  5 
2  0 <-- Delete Row 2 [i = 2] 
3  7 
+1

工作backwords這就是竅門。非常感謝你的答案,但不是解釋。我試圖在我去的時候自學VBA for Excel,並沒有意識到它會跳過行! –

+0

@ SammyO'Day因爲你是這個網站的新手,請看看這兩個鏈接:[我應該怎麼做當有人回答我的問題?](http://stackoverflow.com/help/someone-answers)和[接受答案:它是如何工作的?](http://meta.stackexchange.com/a/5235/309951)。 –

+0

@ user1274820你是否嘗試過我的代碼?如果它幫助你標記爲答案和upvote –

0

嘗試下面的代碼,它在欄搜索的最後一排一個(正如你所說的你的電話號碼您的PIVOT中的行可能會更改)。 F.Y.I總是也添加對PIVOT所在工作表的引用是比較安全的。

Dim i As Long 

' use this to find the last row in Column A (since number of rows in PIVOT is dynamic 
For i = Cells(Rows.Count, "A").End(xlUp).Row To 6 Step -1 

    If Cells(i, 1) = "0" And Cells(i, 2) = "0" Then 
     Range(Cells(i, 1), Cells(i, 2)).Delete Shift:=xlUp 
    Else 
     If Cells(i, 3) = "0" And Cells(i, 4) = "0" Then 
       Range(Cells(i, 3), Cells(i, 4)).Delete Shift:=xlUp 
     End If 
    End If 

Next i 
相關問題