从数据中查找和删除零

时间:2017-05-30 21:07:15

标签: excel vba excel-vba

所以我在新手级别使用VBA,我试图使用此代码查找零值并从我的数据集中删除它们。

Sub delete_empty_cells()
    Dim lRow As Long
    Dim iCol As Long
    Dim iCntr As Long
    lRow = 73
    iCol = 50
    For iCol = 50 To 1 Step -1
        For iCntr = lRow To 1 Step -1
            If Cells(iCntr, 1) = 0 Then
                Range(iCol & iCntr).Delete Shift:=xlUp
            End If
        Next
    Next
End Sub

我的数据集是73乘50,但是大小可以改变,所以解释如何更改解析数据的大小将是恒星。我实际上对这里发生的事情的想法很少,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

第一个 find and replaces 下面的子项全部为零(与整个单元格匹配),然后使用 SpecialCells 删除所有空白单元格方法;

Option Explicit 

Sub FindAndDeleteZeros()

Dim sht As Worksheet
Dim fnd As Variant
Dim rplc As Variant
Dim intCol As Integer
Dim intRow As Integer

fnd = "0"
rplc = ""

Set sht = ActiveSheet

  sht.Cells.Replace what:=fnd, Replacement:=rplc, _
    LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False, _
    SearchFormat:=False, ReplaceFormat:=False

intRow = 73

For intCol = 1 To 50 '1st to 50th column

    sht.Range(sht.Cells(1, intCol), sht.Cells(intRow, intCol)). _ 
    SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp 

Next intCol 

End Sub 

查看注释中提供的链接,以避免硬编码模块中的最后一列和最后一行。