用乘法条件计算滤波范围

时间:2017-08-03 14:32:26

标签: excel excel-formula

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

enter image description here

如果" T =" A列中的值包含一个Semikolon它可以计算double,如果它包含2个Semikolons它可以计算3等等......

她是一张图片,展示了计数应该如何运作。

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

此图片中显示。 enter image description here

您可以看到部分结果与总金额相同,因为没有过滤器。

当我设置过滤器时,它应该只显示可见单元格的数量,在此图片中为LIke。

enter image description here

1 个答案:

答案 0 :(得分:1)

更新:
在更多的根源之后,我找到了一个应该做的技巧。它需要作为数组函数输入(Ctrl + Shift + Enter)。

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

在您的情况下,FirstCell是A7,Range是A7:A22。

小计(103,...)是一个CountA函数,但忽略了隐藏的单元格。但是,它只返回一个值(隐藏单元格的数量),除非给出一个引用数组,这是Offset废话提供的。
注意:此问题与this one.

非常相似

如果有这个诀窍,请告诉我:

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函数从here无耻地复制。