2017-08-03 1 views
0

Ich braucheZählen Filterd Bereich mit Multiplikation Bedingung

enter image description here

das Teilergebnis aller Adresse in Spalte A zu zählen, wenn der „T =“ Wert in Spalte A ein Semikolon enthält es doppelt an Graf hasen , wenn es 2 Semikolons enthält, muss es 3 und so weiter zählen ...

Sie ist ein Bild, um zu zeigen, wie das Zählen funktionieren sollte.

Ich habe die Formeln, um den Betrag zu zählen, wo der Status abgeschlossen ist oder ausstehend und die Formel, um den Gesamtbetrag zu zählen.

In diesen Bildern gezeigt. enter image description here

Sie können sehen, dass das Teilergebnis 22 wie der Gesamtbetrag ist, weil es keinen Filter gibt.

Wenn ich einen Filter einstelle, sollte er nur die Anzahl der sichtbaren Zellen anzeigen, wie in diesem Bild.

enter image description here

Antwort

1

UPDATE:
Nach etwa einigen weiteren Verwurzelung, fand ich einen Trick, den es tun soll. Es muss als Array-Funktion eingegeben werden (Strg + Umschalt + Enter).

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

In Ihrem Fall ist FirstCell A7 und Reichweite ist A7: A22.

Zwischensumme (103, ...) ist eine CountA-Funktion, ignoriert jedoch verborgene Zellen. Es gibt jedoch nur einen Wert (die Anzahl der versteckten Zellen) zurück, es sei denn, es wird ein Array von Referenzen angegeben, was der Offset-Nonsense bietet.
Hinweis: Diese Frage ist ganz ähnlich wie this one.


Lassen Sie mich wissen, ob dies funktioniert der Trick:

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 Funktion von here schamlos kopiert.

+0

Nur realisiert, dass Sie nicht nach VBA suchten. Vergiss es. – TBlock

+0

danke, funktioniert Perfekt – Moosli

Verwandte Themen