用乘法条件计数滤波范围

我需要计算A列中所有地址的部分结果

在这里输入图像说明

如果A列中的“T =”值包含一个塞米克隆,则它计数为2,如果它包含2个塞米克隆则计数为3,等等。

她是一张照片,显示计数如何工作。

我有计算状态完成或待定数量的公式以及计算总额的公式。

在此图片中显示。 在这里输入图像说明

您可以看到,“部分结果”与总金额类似,因为没有“filter”。

当我设置一个filter,它应该只显示可见单元格的数量,在这张图片。

在这里输入图像说明

更新:
在生根之后,我发现了一个应该做的事。 它需要作为数组函数input(Ctrl + Shift + Enter)。

=SUMPRODUCT((LEN(Range)-LEN(SUBSTITUTE(Range,";","")) +1)*--(SUBTOTAL(103,OFFSET(FirstCell,ROW(Range)-ROW(FirstCell),0))=1))

在你的情况下,FirstCell是A7和范围是A7:A22。

小计(103,…)是一个CountA函数,但它忽略隐藏的单元格。 但是,它只返回一个值(隐藏的单元格的数量),除非给出一个引用数组,这是Offset无意义提供的。
注意:这个问题和这个问题很相似。


让我知道如果这是诀窍:

 Function CountFilter(rng As Range, delimiter As String) As Integer CountFilter = 0 For Each c In rng If Rows(c.Row).Hidden = False Then CountFilter = CountFilter + 1 + CountChrInString(c.Value, delimiter) End If Next c End Function Public Function CountChrInString(Expression As String, Character As String) As Long '' ''' Returns the count of the specified character in the specified string. ''' ' ' ? CountChrInString("a/b/c", "/") ' 2 ' ? CountChrInString("a/b/c", "\") ' 0 ' ? CountChrInString("//////", "/") ' 6 ' ? CountChrInString(" a / b / c ", "/") ' 2 ' ? CountChrInString("a/b/c", " / ") ' 0 ' Dim iResult As Long Dim sParts() As String sParts = Split(Expression, Character) iResult = UBound(sParts, 1) If (iResult = -1) Then iResult = 0 End If CountChrInString = iResult End Function 

CountChrInString函数从这里无耻复制。