Excel 如果行被隐藏,则计算字符串的值

Excel 如果行被隐藏,则计算字符串的值,excel,excel-formula,vba,Excel,Excel Formula,Vba,我想数一数: A列包含“A” 包含“a”的行是隐藏的 例如: 如果第2行和第5行(包含“a”)被隐藏,则输出应为2(不包括第3行中可见的“a”) 最简单的方法: 1) 添加辅助列 =小计(103,A2)在A列旁边,对于A3,它变成(103,A3),依此类推 2) 然后使用 =COUNTIFS(A2:A5,“a”,B2:B5,“=0”)在VBA中,我有一个自定义函数,如下所示: Public Function IsCellHidden(vRange As Range) As Boolean

我想数一数:

  • A列包含“A”
  • 包含“a”的行是隐藏的
例如:

如果第2行和第5行(包含“a”)被隐藏,则输出应为2(不包括第3行中可见的“a”)

最简单的方法:

1) 添加辅助列

=小计(103,A2)
在A列旁边,对于A3,它变成(103,A3),依此类推

2) 然后使用


=COUNTIFS(A2:A5,“a”,B2:B5,“=0”)
在VBA中,我有一个自定义函数,如下所示:

Public Function IsCellHidden(vRange As Range) As Boolean
    'Check if a cell is hidden

    Dim vHidden As Boolean

    If vRange.Rows(1).Hidden Or vRange.Columns(1).Hidden Then vHidden = True

    IsCellHidden = vHidden
End Function

然后我把它放在A列对应单元格的B列中,因此B1将是例如
=IsCellHidden(A1)
,然后在C6中我将有
=COUNTIFS(A1:A10,“A”,B1:B10,TRUE)
这将只计算隐藏行

Sub SumInvisible()

    For i = 1 To 10
        If Range("A" & i).EntireRow.Hidden = True Then
            If Range("A" & i).value = "a" then
                Var = Var + 1
            End if
        End If
    Next i

    Range("B" & i).Value = Var

End Sub

使用健康的部分从


@mehow可能重复我要计算不可见的行数。请验证它是否只是要计算的可见行数,还是要计算的隐藏行数?由于
ColA
还包含一个
A
,这两种情况的结果都是
2
。@Santosh,您也可以说您想计算可见或隐藏的数据,或者提供不会造成混淆的数据。@Santosh,这是不明确的。)此外,由于隐藏和可见都包含2,因此您的示例无法提供清晰性。但很高兴我一开始是对的:D这是完美的,但这是我最后的武器。+1对于非VBA解决方案:)@brettdj工作得很有魅力。谢谢。
=COUNTIF(A1:A5,"a")-SUMPRODUCT(--($A$1:$A$5="a"),SUBTOTAL(103,OFFSET(A1,ROW($A$1:$A$5)-ROW(A1),0)))