• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

zoekresultaten vermelden met tekst aan aantal

Status
Niet open voor verdere reacties.

serpent xx

Gebruiker
Lid geworden
2 mei 2008
Berichten
201
Mijn bedoeling is als kolom C wordt gefilterd naar 2 resultaten deze resultaten vermeld worden in B11 / C11 resp. B12 / C12.
Dus als je bv op "a" en "d" filtert zou in B11 de waarde "a" dienen te komen, in C11 het aantal 9, in B12 "d" en in C12 het aantal 8.
Als er maar 1 criterium is moeten de cellen B12 en C12 leeg blijven.
Met welke formule zou ik dit voor elkaar krijgen?
 

Bijlagen

Laatst bewerkt:
Voor B12 en verder naar onderen een macro, voor C12 en verder naar onderen de formule.
Code:
=SOM.ALS($C$2:$C$9;B12;$B$2:$B$9)

Code:
Private Sub Worksheet_Calculate()
Dim c00 As String, arr
Application.EnableEvents = False
Range("B12").Resize(10).ClearContents
        With AutoFilter.Filters(2)
            If IsArray(.Criteria1) Then
              c00 = Replace(Join(.Criteria1, ","), "=", "")
            Else
                c00 = Replace(.Criteria1, "=", "")
            End If
            
            If .Operator <> 0 And .Operator < 3 Then
                c00 = c00 & "," & Replace(.Criteria2, "=", "")
            End If
        End With
    arr = Application.Transpose(Split(c00, ","))
    Range("B12").Resize(UBound(arr)) = arr
  Application.EnableEvents = True
End Sub

Ps: plaats kopteksten boven de gegevens en zet de filter op rij 1.
 
Laatst bewerkt:
Iets robuuster.
Code:
Private Sub Worksheet_Calculate()
Dim c00 As String, arr
Application.EnableEvents = False
Range("B12").Resize(10).ClearContents
        With AutoFilter.Filters(2)
         If FilterMode Then
            If .Operator = 7 Then
              c00 = Replace(Join(.Criteria1, ","), "=", "")
            Else
                c00 = Replace(.Criteria1, "=", "")
            End If
            
            If .Operator=2 Then
                c00 = c00 & "," & Replace(.Criteria2, "=", "")
            End If
          arr = Application.Transpose(Split(c00, ","))
          Range("B12").Resize(UBound(arr)) = arr
         End If
    End With
  Application.EnableEvents = True
End Sub

Of:
Code:
Private Sub Worksheet_Calculate()
Dim c00 As String, arr
Application.EnableEvents = False
Range("B12").Resize(10).ClearContents
        With AutoFilter.Filters(2)
         If FilterMode Then
            If .Operator = 7 Then
              c00 = Replace(Join(.Criteria1, ","), "=", "")
            Else
                c00 = Replace(.Criteria1, "=", "")
               If .Operator = 2 Then
                c00 = c00 & "," & Replace(.Criteria2, "=", "")
             End If
            End If
          arr = Application.Transpose(Split(c00, ","))
          Range("B12").Resize(UBound(arr)) = arr
         End If
    End With
  Application.EnableEvents = True
End Sub
 
Laatst bewerkt:
In plaats van een macro kan ook deze matrixformule gebruikt worden in B12 en verder naar onderen:
Code:
=ALS.FOUT(INDEX(C$2:C$9;KLEINSTE(ALS(ISNB(VERGELIJKEN(C$2:C$9;B$11:B11;0));ALS(SUBTOTAAL(102;INDIRECT("B"&RIJ(B$2:B$9)))>0;RIJ(A$2:A$9)-1));1));"")
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan