• 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 gebruiken op meerdere kolommen in excel VBA

Status
Niet open voor verdere reacties.

AatB

Gebruiker
Lid geworden
15 dec 2007
Berichten
253
Hallo,

ik heb een sheet waar in bepaalde cellen meerdere gegevens (lees: vaardigheden) staan.

Bijvoorbeeld:
In cell(5,1) staan Leiderschap Creatief Sales
In cell(6,1) staan Creatief Projectmanagement
In cell(7,1) staan Timmerman Lasser
In cell(8,1) staan Servicegericht Leiderschap

De vaardigheden gescheiden door Chr(10).

Nu wil ik de rijen zien waar de vaardigheden Sales of Servicegericht of Lasser in voorkomen


Daarnaast wil ik dit tegelijkertijd ook nog voor een andere kolom doen. Bijvoorbeeld of ze Engels kunnen praten.

Krijg het helaas niet voor elkaar met de autofilter van excel, omdat je daar maar 2 items als xlOr in kunt geven.

Heeft iemand hier een oplossing voor?

mvg,

Aat
 
Aat, je bent vergeten het excel bestand toe te voegen, en geef ook aan welke excel je gebruikt.
 
Laatst bewerkt:
Bv.
Code:
Sub hsv()
  Range("e2") = "=sum(countif(A2,{""*sales*"",""*leiderschap*"",""*lasser*""}))"
  Cells(4,1).CurrentRegion.AdvancedFilter xlFilterInPlace, Range("e1:e2")
  Range("e2").ClearContents
End Sub
Of:
Code:
Sub hsv_2()
Dim d As Object, sv, cl, i As Long
Set d = CreateObject("scripting.dictionary")
 With Cells(4,1).CurrentRegion
  sv = .Value
   For Each cl In Array("sales", "leiderschap", "lasser")
    For i = 1 To UBound(sv)
      If InStr(sv(i, 1), cl) Then d(sv(i, 1)) = ""
    Next i
   Next cl
   If d.Count > 0 Then .AutoFilter 1, d.keys, 7
 End With
End Sub
 
Hi Harry, wel een mooie oplossing, maar als ik er een 2e kolom bij doe, dan telt alleen het laatste filter.
Feitelijk zou het tweede filter gemaakt moeten worden op het resultaat van het eerste filter.

grt Aat

Code:
Sub ttt()

    wstbl.AutoFilterMode = False
    Set Rng = activeworksheet.Range("A1").CurrentRegion
    Set Rng = Rng.Offset(1, 0).Resize(Rng.Rows.Count - 1, Rng.Columns.Count)
   
    Range("A15") = "=sum(countif(AI3,{""*sales*"",""*leiderschap*"",""*lasser*""}))"
    Range("A20") = "=sum(countif(AF3,{""*engels*""}))"
    
    With Rng
        .AdvancedFilter xlFilterInPlace, Range("A14:A15")
        .AdvancedFilter xlFilterInPlace, Range("A19:A20")
    End With
 
End Sub
 
Laatst bewerkt door een moderator:
Aat, je bent vergeten het excel bestand toe te voegen, en geef ook aan welke excel je gebruikt.

Hi Sylvester,

het excel bestand bevat heel veel vba data, dus dat gaat niet werken.
Ik probeer eerst hetgeen Harry voorstelt.

grt Aat
 
Beter?
Code:
Sub hsv_2()
Dim d As Object, sv, cl, i As Long
Set d = CreateObject("scripting.dictionary")
 With Cells(4,1).CurrentRegion
  sv = .Value
   For Each cl In Array("sales", "leiderschap", "lasser")
    For i = 1 To UBound(sv)
      If InStr(sv(i, 1), cl) Then d(sv(i, 1)) = ""
    Next i
   Next cl
   If d.Count > 0 Then
    .AutoFilter 1, d.keys, 7
    .AutoFilter 2, "* Engels*"
  end if
 End With
End Sub
Als er alleen Engels in kolom B staat dan kunnen de asterisks (*) verwijderd worden.
 
Ik kom er helaas niet uit.....
Hierbij een voorbeeld bestandje met 2 kolommen, maar ik wil wel op 5 kolommen kunnen filteren.
 

Bijlagen

  • test filter.xlsx
    12,6 KB · Weergaven: 11
Laatst bewerkt:
Code:
Sub hsv_2()
Dim d As Object, sv, cl, i As Long
Set d = CreateObject("scripting.dictionary")
 With Cells(2, 2).CurrentRegion
  sv = .Value
   For Each cl In Array("sales", "leiderschap", "lasser")
    For i = 2 To UBound(sv)
      If InStr(1, sv(i, 2), cl, 1) Then d(sv(i, 2)) = ""
    Next i
   Next cl
   If d.Count > 0 Then
     .AutoFilter 2, d.keys, 7
     .AutoFilter 1, "*Engels*"
   End If
 End With
End Sub
 
Hi Harry,

met 2 kolommen lukt het nu.. ik ga zelf met nog meer kolommen aan het werk... Als ik er niet uit kom, dan wil er graag bij je op terug komen.

tot zover bedankt.....
mvg Aat
 
Laatst bewerkt door een moderator:
Hi Harry,

met 2 kolommen lukt het nu.. ik ga zelf met nog meer kolommen aan het werk... Als ik er niet uit kom, dan wil er graag bij je op terug komen.

tot zover bedankt.....
mvg Aat

Hi Harry,

Ik heb nog wel een vraag aangaande deze regel

Code:
 .AutoFilter 2, d.keys, 7

wat betekent de 7 ?

mvg,
Aat
 
Top!!
 
Laatst bewerkt door een moderator:
Kan ook zo.
Code:
Sub hsv_3()
 Range("g1").Resize(, 2) = Array("Talen", "Vaardigheden")
 Range("g2").Resize(3) = "*Engels*"
 Range("h2").Resize(3) = Application.Transpose(Array("*Sales*", "*Leiderschap*", "*Lasser*"))
 Range("b2").CurrentRegion.AdvancedFilter xlFilterInPlace, Range("g1:h4")
End Sub
 
Dat is ook idd heel mooi...ga ik ook mee aan de slag. Bedankt
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan