连续计数可见空白单元格

时间:2014-04-10 10:56:09

标签: excel excel-vba vba

我的数据集中每列都有大量空白字段。在我将一些任意过滤器应用到其他列之后,我想计算每列中的空白单元格数。

我已经使用以下

sub中使用此功能
 Sub whatever()
 Dim myrange As Range
 Set myrange = Worksheets("Sheet1").Range("a1:a100")
 myrange.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeBlanks).Count     
 End Sub

但是当我尝试把它放在这样的UDF中时

 Function CountBlankVisible(myrange As Range)
 CountBlankVisible = myrange.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeBlanks).Count
 End Function

无论细胞类型如何,它似乎都在计算范围内的每个细胞。任何想法为什么这将在子工作但不作为一个功能?是否可以通过其他方式获得此计数?

2 个答案:

答案 0 :(得分:1)

Excel UDF有一些限制(从工作表调用时)。您可以阅读here

以下是工作示例:

Function CountBlankVisible(myrange As Range)
    Dim c As Range
    For Each c In myrange
        If c.RowHeight > 0 And IsEmpty(c.Value) Then _
            CountBlankVisible = CountBlankVisible + 1
    Next
End Function

答案 1 :(得分:1)

作为simoco代码的替代品:

Function CountBlankVisible(myrange As Range)
    Dim c As Range
    For Each c In myrange
        If Not c.EntireRow.Hidden And c.Value ="" Then
            CountBlankVisible = CountBlankVisible + 1
        End If
    Next
End Function