我想计算在哪里:
- A 列包含“a”
- 包含“a”的行被隐藏。
例如:
如果第 2 行和第 5 行(包含“a”)被隐藏,则输出应为 2(不包括第 3 行中可见的“a”)。
我想计算在哪里:
例如:
如果第 2 行和第 5 行(包含“a”)被隐藏,则输出应为 2(不包括第 3 行中可见的“a”)。
从这里使用健康的部分
=COUNTIF(A1:A5,"a")-SUMPRODUCT(--($A$1:$A$5="a"),SUBTOTAL(103,OFFSET(A1,ROW($A$1:$A$5)-ROW(A1),0)))
这只会计算隐藏的行。
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
最简单的方法:
1) 添加辅助列
=SUBTOTAL(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)