• 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 (of Autofilter) via Macro op "actieve lessen" en op Datum

Status
Niet open voor verdere reacties.

Gert Bouwmeeste

Verenigingslid
Lid geworden
28 nov 2007
Berichten
827
Goedemorgen,

Ik wil voor onze gymvereniging via VA kunnen filteren op de "actieve lessen" in een bepaalde maand. Zie voorbeeldbestand.

Voor december 2019 moet dat filter dan bestaan uit:

Kolom C (Lessen)
Alles behalve "75 Inschrijfgeld"​

Kolom D (Begindatum)
Kleiner of gelijk aan de laatste datum van de maand ( =>31-12-2019)​


Kolom E (einddatum)
Lege cellen​
OF
Groter of gelijk aan de eerste dag van de maand EN Kleiner of gelijk aan de laatste dag van de maand​

Ik kom er niet uit. Handmatig de filtering doen is geen probleem uiteraard. Als ik m dan opneem met de recorder krijg ik dit

Code:
Sub TestMacroFilteren()

    ActiveSheet.Range("$A$1:$E$303").AutoFilter Field:=3, Criteria1:=Array( _
        "01 Ouder en kind", "05 BBB-Gymnastiek", "10 Gym 3-7 jr", "11 Gym 7-9 jr", _
        "12 Gym 9+ jr", "14 Volleybal heren", "20 Springgroep groep 8 e.o.", "27 Zumba", _
        "29 BBB-Gymnastiek", "30 Springgroep groep 3 tm 7", "51 Total Body Workout", _
        "52 Total Body Workout", "53 Bewegingsleer", "54 Bewegingsleer", _
        "55 Bewegingsleer", "56 Bewegingsleer", "57 Bewegingsleer", _
        "59 SportFit 55+ gemengd", "60 SportFit 55+ gemengd", "77 Kid's Dance"), _
        Operator:=xlFilterValues

    ActiveSheet.Range("$A$1:$E$303").AutoFilter Field:=4, Criteria1:= _
        "<=31-12-2019", Operator:=xlAnd

    ActiveSheet.Range("$A$1:$E$303").AutoFilter Field:=5, Criteria1:= _
        ">=1-12-2019", Operator:=xlAnd, Criteria2:="<=31-12-2019"
    [COLOR="#FF0000"]'aan deze laatste voorwaarde moet nog een voorwaarde worden toegevoegd, namelijk " OF alle lege cellen"[/COLOR]
End Sub

Iemand een idee?
 

Bijlagen

Dit is volgens mij een goed voorbeeld waarbij de filter opnemen met de macro recorder helpt om de oplossing te vinden. Je kunt geen 3 voorwaarden opgeven maar

Code:
 ActiveSheet.Range("$A$1:$E$303").AutoFilter Field:=5, Criteria1:=Array("=") _
        , Operator:=xlFilterValues, Criteria2:=Array(1, "12/31/2019")

je kunt achter criteria ook nog xlFilterThisMonth
of feitelijk nog een hele waslijst met enum values
https://docs.microsoft.com/en-us/do....excel.xldynamicfiltercriteria?view=excel-pia

edit: en in deze link vind je veel meer voorbeelden over het filteren met data ook hoe de Array() werkt.
https://www.excelcampus.com/vba/filter-dates/
 
Laatst bewerkt:
Met meerdere voorwaarden in de laatste array.

Code:
Sub hsv()
With Cells(1).CurrentRegion
  .AutoFilter 3, "<>75 Inschrijfgeld"
  .AutoFilter 4, "<=" & DateSerial(Year(Now), Month(Now) + 1, 1)
  .AutoFilter 5, [COLOR=#ff0000]Array("=")[/COLOR], 7, [COLOR=#ff0000]Array(1, Format(Now, "m/d/yyyy"), 1, "12-1-2011", 1, "09-01-2015")[/COLOR]
End With
End Sub

Filtert op lege cellen en op de maanden van de data in de array (tw: maand van het lopend jaar, december van 2011 en September van 2015).
 
Laatst bewerkt:
Voor het filteren op AND of Or of een combinatie hiervan kan je beter het geavanceerde filter gebruiken. In j2 staat een formule die waarschijnlijk beter kan of niet geheel aan de voorwaarden voldoet maar dat is een kwestie van aanpassen.

De code kan je dan reduceren tot 1 regel zonder na te hoeven denken over het datum formaat of wat dan ook. Als de formule goed is, dan werkt het filter ook.

Code:
Sub VenA()
  Cells(1).CurrentRegion.AdvancedFilter xlFilterInPlace, Range("J1:J2")
End Sub
 

Bijlagen

Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan