Excel 清除A列中空单元格的内容

Excel 清除A列中空单元格的内容,excel,vba,Excel,Vba,请允许我请求你的帮助。“我的高级筛选器”不起作用,因为列A的空单元格中有不可见的内容。为了让它工作,我需要VBa代码,它将选择从A7到A200的所有单元格,并只清除空白单元格的内容 只需使用特殊单元格: 如果列1中有返回Null的公式单元格,并且要清除它们: Sub ClearAlmostMothing() Dim rng As Range On Error Resume Next Set rng = Columns(1).SpecialCells(xlCellT

请允许我请求你的帮助。“我的高级筛选器”不起作用,因为列A的空单元格中有不可见的内容。为了让它工作,我需要VBa代码,它将选择从A7到A200的所有单元格,并只清除空白单元格的内容

只需使用特殊单元格:

如果列1中有返回Null的公式单元格,并且要清除它们:

Sub ClearAlmostMothing()
    Dim rng As Range
    On Error Resume Next
        Set rng = Columns(1).SpecialCells(xlCellTypeFormulas)
        For Each r In rng
            If r.Value = "" Then r.ClearContents
        Next r
    On Error GoTo 0
End Sub
注:

如果列已经干净,使用OneError可以避免出现问题 使用ClearContents只保留单元格格式。 编辑1:

此版本在我的计算机上稍快一些:

Sub ClearAlmostMothing2()
    Dim rng As Range, rClear As Range
    Set rClear = Nothing
    On Error Resume Next
        Set rng = Range("A7:A400").SpecialCells(xlCellTypeFormulas)
        For Each r In rng
            If r.Value = "" Then
                If rClear Is Nothing Then
                    Set rClear = r
                Else
                    Set rClear = Union(rClear, r)
                End If
            End If
        Next r
        rClear.ClearContents
    On Error GoTo 0
End Sub

空格是否是公式的结果,因此它们包含=或其他内容?是的,空格是公式的结果,但是如果我尝试使用=,它会给我0,然后只过滤包含0的单元格,而不过滤空格。感谢您的代码,但是当我使用此代码时,它会给我运行时错误1004。您确定存在空格吗?如果有公式导致空白,即=IF1+1=3,错误的数学,结果是有效的=,这不被认为是空白。再次,你是正确的,空白单元格是从公式= IFErrVoRoopUpIFAS导出:AS=,NA,AS:AS,“接收报告”!B:G,5,错,我想这个单元格应该是空白的,但似乎不是这样。“很抱歉,我的知识在excel中还处于中级水平,我该如何应对呢?”纳什彼得斯-加里斯学生的回答应该能帮到你!嗨,加里,你的代码真的很有效,谢谢。我遇到的唯一问题是运行这段代码需要更长的时间,是否有办法减少运行时间。再次感谢您的帮助。@NashPeters可能会加快一点速度。……几小时后再查看。你好,Gary,再次非常感谢,我将等待,非常感谢您的支持。@NashPeters查看我的EDIT1Hi Gary,感谢您编辑的版本。但是此公式没有清除空白单元格,它与您之前发布的不一样。
Sub ClearAlmostMothing2()
    Dim rng As Range, rClear As Range
    Set rClear = Nothing
    On Error Resume Next
        Set rng = Range("A7:A400").SpecialCells(xlCellTypeFormulas)
        For Each r In rng
            If r.Value = "" Then
                If rClear Is Nothing Then
                    Set rClear = r
                Else
                    Set rClear = Union(rClear, r)
                End If
            End If
        Next r
        rClear.ClearContents
    On Error GoTo 0
End Sub