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

Opgelost komende verjaardagen uit lijst filteren

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

gGerretje

Gebruiker
Lid geworden
12 mrt 2008
Berichten
476
Beste helpers.

Ik ben bezig met het maken van een eigen verjaardagskalender.
Bijgaand bestandje is wat me tot nu toe gelukt is. De namen zijn fictief..

Op het blad "Verjaardagen staan alle datums van dit jaar. Ook de datums waarop niemand jarig is. De datums waarop meerdere mensen jarig zijn staan er ook meerdere keren in.

Kolom A op het blad "Weergave" is overgenomen van het blad "Verjaardagen". De personen met geboortedatum staan in B en C, ook gewoon overgenomen van het andere blad.

Ik heb nu alle personen uit die lijst gehaald. Die staan in de kolommen F, G en H met resp. de verjaardag van dit jaar, naam en geboortedatum. De bedoeling is dat ik nu de personen met geboortedatum 22 t/m 29 december apart ergens kan weergeven. Die wil ik namelijk straks op een formulier met de komende jarigen weergeven samen met de geboortedatum.

Vraag is dus: hoe haal ik de personen die binnen 7 dagen na =nu() jarig zijn eruit.

Ik hoop dat dat duidelijk genoeg is omschreven.
En ik hoop nog meer dat iemand een mooie oplossing weet.
Bedankt alvast.
Groeten Ger
 

Bijlagen

Office 365:

Voor de cellen in blad weergave.

Code:
=FILTER(A1:C500;(A1:A500>=VANDAAG())*(A1:A500<VANDAAG()+8)*(B1:B500<>""))
 
Ik moet me even verontschuldigen Harry.
Ik werk in Excel2010 dus die filterfunctie werkt volgens mij niet.
Maar ik ben ook maar eens even in VBA aan het knutselen. Ik denk dat dat handiger is.
Misschien moet ik de vraag even op pauze zetten.
 
Of had je graag een Vba oplossing gewild?
 
Jazeker, maar ik ben eerst nog zelf wat aan het proberen.
Als ik er niet uitkom zal ik mijn bovenaardse ingevingen :-) hier plaatsen en de vraag opnieuw op onopgelost zetten.
Fijn dat je je hulp weer aanbiedt. Dank je wel.
 
  • Leuk
Waarderingen: HSV
Hier een kleine oplossing met formules
 

Bijlagen

Of desgewenst een stukje VBA:
 

Bijlagen

@ Harry
Het is me gelukt

Uitgebreid (BBCode):
Sub JarigenFilteren()
    Dim cel As Range
    Dim rijnummer As Long
    Dim naam As String
    Dim vandaag, verjaardag, geboortedatum As Date
    
    rijnummer = 0
    vandaag = Date     '#### eventueel een datum invoeren in de vorm: #m/d/jjjj#     #####
    For Each cel In Sheets("Verjaardagen").Range("E5:E500")
        If (cel.Value >= vandaag) And (cel.Value <= vandaag + 7) And cel.Offset(0, 2) <> "" Then
            verjaardag = cel.Value
            naam = cel.Offset(0, 2).Value
            geboortedatum = cel.Offset(0, 3).Value
            boodschap = MsgBox(verjaardag & " " & naam & " " & geboortedatum, vbOKOnly, "Info")
            rijnummer = rijnummer + 1
            Application.Sheets("Weergave").Range("A" & rijnummer) = verjaardag
            Application.Sheets("Weergave").Range("B" & rijnummer) = naam
            Application.Sheets("Weergave").Range("C" & rijnummer) = geboortedatum
        End If
    Next cel
End Sub

Het zal best korter kunnen maar deze is nog overzichtelijk voor mijn VBA niveau.

Fijne feestdagen,
Ger
 
@ Popipipo
Ik krijg in het rechterblok velden met #naam. Waarschijnlijk vanwege mijn Excel2010.

@ Edmoor
Ik ga je oplossing bewaren want ik hoop er nog iets van te kunnen gebruiken.

Maar uiteindelijk moest ik alleen de verjaardagen van de komende 7 dagen hebben. Die ga ik namelijk weergeven op mijn formulier dat ik bij opstarten wil tonen.
Dat opstarten van het formulier is al gelukt. De gegevens erin plaatsen is mijn tijdverdrijf voor de komende dag(en). Als ik vragen heb kom ik bij jullie terug.

Bedankt voor jullie bijdragen
Fijne feestdagen
Ger
 
Mooi dat het je is gelukt Ger.

Ik liet je eerst je gang gaan (daar leer je tenslotte het meeste van).
Onderstaande code zet alles in een array (container) en schrijft daarna alles in een keer naar het blad.
Code:
Sub hsv()
Dim sv, i As Long, n As Long
sv = Sheets("verjaardagen").Cells(5, 5).CurrentRegion.Columns(4).Resize(, 4)
 For i = 1 To UBound(sv)
   If sv(i, 1) >= Date And sv(i, 1) < Date + 8 And sv(i, 3) <> "" Then
            n = n + 1
     sv(n, 1) = sv(i, 1)
     sv(n, 2) = sv(i, 3)
     sv(n, 3) = sv(i, 4)
   End If
Next i
If n > 0 Then Sheets("weergave").Cells(1, 10).Resize(n, 3) = sv
End Sub
 
@ Edmoor
Ik ga je oplossing bewaren want ik hoop er nog iets van te kunnen gebruiken.

Maar uiteindelijk moest ik alleen de verjaardagen van de komende 7 dagen hebben. Die ga ik namelijk weergeven op mijn formulier dat ik bij opstarten wil tonen.
Dat opstarten van het formulier is al gelukt. De gegevens erin plaatsen is mijn tijdverdrijf voor de komende dag(en). Als ik vragen heb kom ik bij jullie terug.

Bedankt voor jullie bijdragen
Fijne feestdagen
Ger
Mijn voorbeeld toont de verjaardagen van de huidige week.
 
Hoi Harry,

Hier moet ik al eens even goed voor gaan zitten.
Ik heb hem geprobeerd maar doet bij mij helemaal niets zichtbaars.
Misschien heb ik hem verkeerd geplaatst of ligt het aan mijn oudere Excel-versie.
Ik ga toch die van mij er nog niet uitgooien.

Ger
 
Mijn voorbeeld toont de verjaardagen van de huidige week.
Hallo Ed,

Ja dat had ik gezien.
In een MsgBox geeft je die datums weer.
Maar ik moet ze natuurlijk wel nog in het formulier krijgen.
Daar zet ik ook de naam geboortedatum en leeftijd in en dat is voor mij gemakkelijker vanuit het werkblad.
Stapje voor stapje hè. Ik moet het zelf ook nog begrijpen. :)

Maar ik kom er wel uit. Gezellig zo rond de Kerst.

Groeten,
Ger
 
Hier de oplossing voor excel 2010
Hallo Willem,

Deze doet inderdaad precies wat hij moet doen. Goed uitgegaan van mijn aanlevering.
Maar ik was achteraf toch niet op de eenvoudigste manier begonnen.
Weer iets bijgeleerd.
Dank je wel

Groeten,
Ger
 
Je kan het object cl gebruiken om de gewenste kolom op te halen.
.Cells(cl.Row, 1) = Kolom A
.Cells(cl.Row, 2) = Kolom B enz.
 
Hoi Harry,

Hier moet ik al eens even goed voor gaan zitten.
Ik heb hem geprobeerd maar doet bij mij helemaal niets zichtbaars.
Misschien heb ik hem verkeerd geplaatst of ligt het aan mijn oudere Excel-versie.
Ik ga toch die van mij er nog niet uitgooien.

Ger
Het resultaat verschijnt in blad 'Weergave' in cellen J1:K1 en verder naar onderen.
 

Bijlagen

Waarom niet de voorgedefinieerde filters in autofilter gebruiken ?
In het voorbeeld de filter voor volgende week.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan