2013-10-23 68 views
1

我有一個電子表格,基於數據透視表(通過ODBC導入)的數據填充行。我使用VLOOKUP,例如:Excel VBA - 掃描範圍和刪除空行

=VLOOKUP(A8;Data!B1:I298;2;FALSE) 

的結果是一樣的東西

Name1 
Name2 
Address1 
Address2 
Postalcode 
Country 

它可能會發生一些樞軸列是空的,導致

Name1 
0 
Address1 
0 
Postalcode 
0 

什麼我需要的是某種函數,通過一系列行循環,例如A8 - A14,並刪除「空」行。我的問題是行不是真的空,它們仍返回0幷包含VLOOKUP公式。

這是可以實現的嗎?我希望我有道理。

謝謝。

+0

您可以應用過濾搜索 '0' 快一點和'空'細胞。接下來你可以刪除整行。試試macrorecorder-可能這對你來說已經足夠了。 –

回答

3

enter image description here

與代碼

Sub Delete0s() 
    Dim i As Long 
    For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 
     If Range("A" & i) = 0 Then 
      Range("A" & i).Delete shift:=xlUp 
     End If 
    Next i 
End Sub 

刪除0所以結果

enter image description here


實現使用自動篩選相同的結果,其通常比循環

enter image description here

代碼

Sub Delete0s() 
    Dim ws As Worksheet 
    Dim rng As Range 
    Dim lastRow As Long 

    Set ws = ThisWorkbook.Sheets("Sheet1") 
    lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row 

    Set rng = ws.Range("A1:A" & lastRow) 
    With rng 
     .AutoFilter Field:=1, Criteria1:="=0" 
     .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
    End With 

    ws.AutoFilterMode = False 
End Sub 

結果

enter image description here

+1

這解決了這個問題。我結束了使用autofilter選項。謝謝你的詳細解釋。 –