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

Filter - op 3 or meer waarden filteren

  • Onderwerp starter Onderwerp starter hmwul
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

hmwul

Gebruiker
Lid geworden
15 dec 2012
Berichten
462
Een vraag waar ik langer mee worstel: filteren op meer dan 2 waarden.

Stel kolom header: Name / Description

selecteer kolom

Dan
Filter > Text Filter
Contains: Woord1
OR
Contains: Woord2

Voor woord3 of woord4 is geen ruimte. Stel dat je nu ook Contains: Woord3 en Contains: Woord4, hoe doe ik dat?
Voor zover ik weet gaan 'boolean' oplossingen gaan uit van 'groter/kleiner dan' of 'waar/niet waar' , maar 'bevat/contains' werkt niet.

Thanks!
 
Dit schreeuwt om een excel voorbeeldje.

Mag het ook op een manier zonder filter?

Welke Excelversie gebruik je?
 
Als het standaard dezelfde woorden zijn:

Code:
Sub jvr()
Sheets(1).Cells(1, 1).CurrentRegion.AutoFilter 1, Array("test1", "test2", "test3"), 7
End Sub

Of woorden naar keuze

Code:
Sub jec()
 Dim a() As Variant, ar As Variant, it As Variant, XX As String, i As Long, x As Long
 ar = Sheets(1).Cells(1, 1).CurrentRegion
 XX = InputBox("Kies namen(Komma gescheiden!)", "Filter")         'zoals:  woord1,woord2,woord3
 
 For Each it In Split(XX, ",")
   For i = 1 To UBound(ar)
     If InStr(1, ar(i, 1), it, vbTextCompare) Then
        ReDim Preserve a(x)
        a(x) = ar(i, 1)
        x = x + 1
     End If
   Next
 Next
  
 Sheets(1).Cells(1, 1).CurrentRegion.AutoFilter 1, a, 7
End Sub
 
kijk eens naar geavanceerd filter

als je een voorbeeld bestandje stuurt doet iemand het wel voor.

en vermeldt ook welke excel je gebruikt.
 
Laatst bewerkt:
Als het standaard dezelfde woorden zijn:

Code:
Sub jvr()
Sheets(1).Cells(1, 1).CurrentRegion.AutoFilter 1, Array("test1", "test2", "test3"), 7
End Sub

Of woorden naar keuze

Code:
Sub jec()
 Dim a() As Variant, ar As Variant, it As Variant, XX As String, i As Long, x As Long
 ar = Sheets(1).Cells(1, 1).CurrentRegion
 XX = InputBox("Kies namen(Komma gescheiden!)", "Filter")         'zoals:  woord1,woord2,woord3
 
 For Each it In Split(XX, ",")
   For i = 1 To UBound(ar)
     If InStr(1, ar(i, 1), it, vbTextCompare) Then
        ReDim Preserve a(x)
        a(x) = ar(i, 1)
        x = x + 1
     End If
   Next
 Next
  
 Sheets(1).Cells(1, 1).CurrentRegion.AutoFilter 1, a, 7
End Sub


Hartelijk dank!
Vraagje: maakt het iets uit als ik in de 1e regel (sub) jec verander in b.v. multifilter ?

Heb de code toegevoegd.

Wat ik doe:
ik selecteer een kolom
speel de macro af
vul twee woorden in, komma gescheiden: woord1, woord2 (ook geprobeerd met woord1,woord2 - dus zonder spatie)

runtime error.



Excel uit Office 365, Engels (Windows 10 x64 Engels),
(FWIW delimiter is comma)
 

Bijlagen

  • SnagIt-01112021 094147.png
    SnagIt-01112021 094147.png
    28,8 KB · Weergaven: 20
Het is belangrijk je bereik overeenkomt met de macro.
Selecteren is niet nodig. Plaats inderdaad even een voorbeeldbestand
 
kijk eens naar geavanceerd filter

als je een voorbeeld bestandje stuurt doet iemand het wel voor.

en vermeldt ook welke excel je gebruikt.

Bijgaand bestandje.

De cellen in geel bevatten woordN (woord1, woord2, woord3..)

In dit verband kan 'woord' van alles zijn, ook een deel van een woord.

b.v. als ik gewoon filter gebruik, contains: betal
dan zal rijen met het woord : betaling gefilterd worden.
(uitbetaling, betalingskosten, etc)


Ik heb naar geavanceerd filteren gekeken, maar ik zou niet weten hoe dat zou moeten fixen eerlijk gezegd.

Dank voor de te nemen moeite.
 

Bijlagen

Zo zou hij moeten werken in je bestand.

Komma gescheiden zonder spaties

Code:
Sub jec()
 Dim a() As Variant, ar As Variant, it As Variant, XX As String, i As Long, x As Long
 ar = Sheets(1).Cells(1, 1).CurrentRegion
 XX = InputBox("Kies namen(Komma gescheiden!)", "Filter")         'zoals:  woord1,woord2,woord3
 
 For Each it In Split(XX, ",")
   For i = 1 To UBound(ar)
     If InStr(1, ar(i, 2), it, vbTextCompare) Then
        ReDim Preserve a(x)
        a(x) = ar(i, 2)
        x = x + 1
     End If
   Next
 Next
  
 Sheets(1).Cells(1, 1).CurrentRegion.AutoFilter 2, a, 7
End Sub
 
Geavanceerd geavanceerd filter:

in cel D2:

PHP:
=NOT(ISERR(SEARCH("Woord1";B2)))+NOT(ISERR(SEARCH("woord2";B2)))+NOT(ISERR(SEARCH("woord3";B2)))+NOT(ISERR(SEARCH("woord 1";B2)))

macro

Code:
Sub M_snb()
  Sheet1.UsedRange.Columns(2).AdvancedFilter 2, Sheet1.Range("D1:D2"), Sheet1.Range("J1")
End Sub

Of met de hand: tabblad 'Data' / optie 'Advanced'.

Zie bijlage
 

Bijlagen

Laatst bewerkt:
of zo:

ps naast de knop staat waarop gefilterd moet worden.
er staat ook *woord1"
dat moet zijn *woord1*
om een woord ergens in een tekst te zoeken moeten er * om heen staan.
 

Bijlagen

Laatst bewerkt:
Zo zou hij moeten werken in je bestand.

Komma gescheiden zonder spaties

Code:
Sub jec()
 Dim a() As Variant, ar As Variant, it As Variant, XX As String, i As Long, x As Long
 ar = Sheets(1).Cells(1, 1).CurrentRegion
 XX = InputBox("Kies namen(Komma gescheiden!)", "Filter")         'zoals:  woord1,woord2,woord3
 
 For Each it In Split(XX, ",")
   For i = 1 To UBound(ar)
     If InStr(1, ar(i, 2), it, vbTextCompare) Then
        ReDim Preserve a(x)
        a(x) = ar(i, 2)
        x = x + 1
     End If
   Next
 Next
  
 Sheets(1).Cells(1, 1).CurrentRegion.AutoFilter 2, a, 7
End Sub


Meesterlijk !!


Heel hartelijk dank. Deze werkt perfect. Ben hier echt superblij mee: het komt nogal eens voor en moest dan in delen filteren en dan apart samenvoegen en gedoe.

Hele kleine kans, maar misschien dat we het ooit zullen meemaken dat Microsoft de 'contains'-filter op deze manier uitbreidt.

Nogmaals, hartelijk dank! :thumb::thumb:
 
@sylvester-ponte
@snb

Hartelijk dank voor jullie bijdragen.
Waardeer het zeer!
Probleem is inmiddels opgelost.
Bij meerdere oplossingen moet je kiezen...
Jullie oplossingen zullen zonder twijfel ook goed werken.

Nogmaals dank!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan