• 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.

Filteren op meer waarden binnen zelfde veld

Status
Niet open voor verdere reacties.

Snulk

Gebruiker
Lid geworden
12 mrt 2005
Berichten
429
hallo,
is het mogelijk om in bijgevoegd voorbeeld te filteren op Klantnr. waar zowel de tekst 22, 75 en 29 in voorkomen?
Tekstfilters gaan niet verder dan 2 criteria en Geavanceerd filter kan alleen met OF overweg in hetzelfde veld...

Graag als het kan een oplossing zonder VBA, maar met de tools van Excel zelf. :)

Dank,

Jos
 

Bijlagen

Dankjewel, maar dit bedoel ik niet, helaas.

Ik bedoel 22 , 75 en 29 tegelijkertijd in hetzelfde veld.

Bij klantnummer. Dus bijvoorbeeld 22675329

Jos
 
Als je deze in D2 zet en doortrekt (mogelijk matrix, dus afsluiten met control+shift+enter):

Code:
=LENGTE(B2)*3-SOM(LENGTE(SUBSTITUEREN(B2;{22;75;29};"")))=6

of

Code:
=SOM(--ISGETAL(VIND.SPEC({22;29;75};B2)))=3

Vervolgens filteren op WAAR
 
Laatst bewerkt:
Hier naast de oplossing van JV nog 2 soortgelijke oplossingen
 

Bijlagen

jos, bedoel je de 3 getallen in ergens terug te vinden in 1 van de 3 cellen? van een rij
dus als de 3 getallen in klantnummer staan of in artikelnummer? of verdeeld over dezen?

ik gok dat deze wel ok is ( ook met geavanceerd filter ) op klantnr
 

Bijlagen

Laatst bewerkt:
Wow bedankt voor alle oplossingen!
Allen de moeite van het bestuderen waard :)

Die laatste van Sylvester is precies wat ik bedoel.

Enorm bedankt allemaal! :thumb:

Jos
 
Hier toch een VBA oplossing. Het werkt naar mijn mening makkelijker dan steeds die wildcards toevoegen aan je zoekopdracht.
Ook kun je hier zelf de hoeveelheid getallen bepalen. Probeer het maar eens:thumb:

Code:
Sub jec()
 Dim a() As Variant, it As Variant, XX As String, i As Long, x As Long, y As Long
 XX = Replace(InputBox("Kies getallen(Komma gescheiden!)", "Filter"), " ", "")      'zoals:  22,29,75

  With Sheets(1).ListObjects(1)
     For i = 1 To .ListRows.Count
        For Each it In Split(XX, ",")
           If InStr(.DataBodyRange(i, 2), it) Then y = y + 1
        Next
        If y = UBound(Split(XX, ",")) + 1 Then
            ReDim Preserve a(x)
            a(x) = .DataBodyRange(i, 2): x = x + 1
        End If
       y = 0
     Next
    If Len(Join(a)) Then
       .Range.AutoFilter 2, a, 7
    Else
       MsgBox "Niets gevonden", vbOKOnly, "Zoekopdracht"
    End If
 End With
End Sub
 

Bijlagen

Laatst bewerkt:
@JVeer, daarvoor hebben ze "filter" uitgevonden
Code:
Sub bs()
     XX = Replace(InputBox("Kies getallen(Komma gescheiden!)", "Filter"), " ", "")     'zoals:  22,29,75
     a = Application.Transpose(Range("TBL_Klanten[klnr.]"))     'je klantennummers
     sp = Split(XX, ",")                                        'je getallen uitgesplitst
     For i = 0 To UBound(sp)                                    '1 voor 1 je getallen aflopen
          a = Filter(a, sp(i), 1, vbTextCompare)                'filter op dat getal
          If UBound(a) <> -1 Then Sheets("bestellingen").ListObjects("TBL_Klanten").Range.AutoFilter 2, a, 7     'eigenlijk een beetje voor de lol, nu al even filteren zodat je kan meevolgen, deze mag straks weg
     Next

     If UBound(a) = -1 Then
          Sheets("bestellingen").ListObjects("TBL_Klanten").Range.AutoFilter
          MsgBox "Niets gevonden", vbOKOnly, "Zoekopdracht"
     Else
          Sheets("bestellingen").ListObjects("TBL_Klanten").Range.AutoFilter 2, a, 7
     End If

End Sub
 
De filter manier ken ik inderdaad ook.
Door mij geplaatste code had ik als een plug and play in een archief bestandje staan, lekker snel;)
 
Hier toch een VBA oplossing. Het werkt naar mijn mening makkelijker dan steeds die wildcards toevoegen aan je zoekopdracht.
Ook kun je hier zelf de hoeveelheid getallen bepalen. Probeer het maar eens:thumb:

Code:
Sub jec()
 Dim a() As Variant, it As Variant, XX As String, i As Long, x As Long, y As Long
 XX = Replace(InputBox("Kies getallen(Komma gescheiden!)", "Filter"), " ", "")      'zoals:  22,29,75

  With Sheets(1).ListObjects(1)
     For i = 1 To .ListRows.Count
        For Each it In Split(XX, ",")
           If InStr(.DataBodyRange(i, 2), it) Then y = y + 1
        Next
        If y = UBound(Split(XX, ",")) + 1 Then
            ReDim Preserve a(x)
            a(x) = .DataBodyRange(i, 2): x = x + 1
        End If
       y = 0
     Next
    If Len(Join(a)) Then
       .Range.AutoFilter 2, a, 7
    Else
       MsgBox "Niets gevonden", vbOKOnly, "Zoekopdracht"
    End If
 End With
End Sub

doe ik binnenkort (kerstvakantie). Super bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan