2013-10-23 56 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选项。谢谢你的详细解释。 –