用乘法条件计数滤波范围
我需要计算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函数从这里无耻复制。