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

Aantal tellen tot datum van vandaag

Status
Niet open voor verdere reacties.

Evelthoven

Gebruiker
Lid geworden
26 sep 2006
Berichten
690
Goedemiddag allemaal,

In het bijgesloten bestand heb ik een voorbeeld gemaakt en daarin heb ik ook de vraag gesteld.

Het gaat erom dat ik in een bepaalde cel graag het aantal gevulde cellen wil zien vanaf vandaag tot de laatste lege cel vóór vandaag.
Het bestand wordt dagelijks aangevuld met de waarde van die dag.

Alvast bedankt voor ieders hulp.

Eric
 

Bijlagen

Beste Sylvester,

Je oplossing werkt perfect. Wat je precies hebt gedaan in de macro kan ik helaas absoluut niet begrijpen, maar het belangrijkste is dat dit de juiste oplossing is.

Bedankt!

Gr.
Eric
 
Sylvester,

Ik had mijn vraag al op opgelost gezet, maar dat bleek wat voorbarig te zijn. Ik dacht dat ik jouw code één op één kon kopieren naar mijn originele bestand. Ik zal even aangeven wat ik gedaan heb. Voor het bereik B2:M32heb ik de naam "AantalVolleDagen" aangemaakt, daarna een module ingevoegd via Alt+F11 en de inhoud van jouw code gekopieerd en hierin de nieuwe module geplakt. Daarna in cel N2 van het werkblad ingevoerd:
=aantalvolledagen(b2:m32). Als resultaat zie ik nu in cel N2 #VERW Ook heb ik het bestand opgeslagen en opnieuw geopend, maar dit geeft geen verschil. Misschien doe ik iets doms, maar ik zie echt niet wat er fout gaat. Heb je misschien een idee?
 
voeg dat bestand (zonder gevoelige info) eens bij.
ps als je module goed is aangemaakt , dan werkt deze function net als iedere andere excel function.

naam aan maken??? waar voor ???
 
Laatst bewerkt:
Hallo Sylvester,

Bij toeval ontdekte ik wat ik fout gedaan heb.
Ik had een naam aangemaakt (Aantalvolledagen), maar dit is blijkbaar niet nodig. Ik heb de naam verwijderd. Daarna in het bestand in cel N2 ingevoerd =aantalvolledagen en hierna geselecteerd (B2:M32) en afgesloten met enter en nu werkt het wel.
Erg dom, maar ik heb in ieder geval weer iets geleerd.

Nogmaals dank voor alles.

Gr.
Eric
 
Beste Sylvester en ook anderen natuurlijk,

Op 25 juni heb ik deze vraag op opgelost gezet, maar nu heb ik sinds enkele dagen weer een probleem. Alleen ik weet niet of ik de juiste werkwijze gebruik door de vraag nu van opgelost weer op onopgelost te zetten. Of moet ik een geheel nieuw bericht beginnen?

Mijn probleem is dat ik nu als ik de manier gebruik van de naam van de functie die je gemaakt hebt (AantalVolleDagen) in cel N2 te zetten met daarachter het bereik waar het om gaat, dat ik dan steeds 0 krijg te zien.
Wat zou er aan de hand kunnen zijn? Er is helemaal niks veranderd aan mijn werkblad, alleen zijn er tot en met vandaag aanvullingen geweest.

Ik ben benieuwd.
 
Ik gok dat je een lege dag of een paar lege dagen achter elkaar hebt? Bij een "lege dag" blijft de teller in je functie namelijk leeg omdat er niets te tellen valt. Da's dus nul. En is de uitkomst van de functie correct.
Maar of dit hetgeen is wat JIJ voor ogen had met die functie, dát weet ik natuurlijk niet. ;)
Om te testen in je eigen workbook zou je voor de gein een getal op vandaag (29/7 = cel $H$30) moeten invullen. Waarschijnlijk zie je dan een 1 verschijnen.
 
Ik heb de functie van Sylvester-Ponte iets ge-upgrade. Het systeem met de dagen kon ik eerst niet zo volgen, maar is goed bedacht. Ik had éérst een andere gemaakt, maar die gaat letterlijk uit van elke positie (cel) binnen het bereik. Maar da's onzin natuurlijk. Immers niet elke maand heeft 31 dagen... ;)
Dit was mijn eerste versie (die dus domweg alle cellen afgaat)
Code:
Function gg(Bereik As Range) As Integer

    Tabel = Bereik
    For Each el In Tabel
        If IsEmpty(el) Then
            If i > 0 Then gg = i: i = 0
        Else
            i = i + 1
        End If
    Next el

End Function

Dit is de gemodificeerde versie...
Code:
Function AantalVolleDagen2(Tabel As Range, Optional TotAan As Date)
Dim Maand As Integer, Dag As Integer
Dim Teller As Double, VanAf As Date
    
    If TotAan = 0 Then TotAan = Date
    VanAf = DateSerial(Year(TotAan), 1, 1)
    For Teller = 0 To TotAan - VanAf
        Maand = DatePart("m", VanAf + Teller)
        Dag = DatePart("d", VanAf + Teller)
        If Tabel(Dag, Maand) = "" Then
            If i > 0 Then AantalVolleDagen2 = i: i = 0
        Else
            i = i + 1
        End If
    Next
    
End Function
Deze functie laat dus altijd het laatste volle blok zien qua aantal zien (volgens mij was dat je bedoeling). Inclusief eventueel gevulde dagen van het einde een vorige maand die netjes
aansluiten bij de eerste van de huidige maand.

Als bonus nog een versie waar ik mee startte. Ik meende toen dat je van al je aaneengesloten blokken, het grootste aantal wilde zien...
Code:
Function ff(Bereik As Range) As Integer

    Tabel = Bereik
    For Each el In Tabel
        If IsEmpty(el) Then ff = WorksheetFunction.Max(i, ff): i = -1
        i = i + 1
    Next el

End Function
Misschien nutteloos om nog te plaatsen, maar och... Ik had 'm tóch gemaakt, dus waarom niet? ;)
 
Eric, plaats eens het bestandje waar in het "mis" gaat?

en heb je wat Ginger zij al geprobeerd om iets in te vullen op de huidige dag?
 
Beste Ginger en Sylvester,

Ik heb een bestandje bijgesloten en daarin op elk van jullie antwoorden een aantal opmerkingen geplaatst met mijn vraag en eigenlijke bedoeling.
Sorry dat ik zo laat reageer, maar ik zit nu pas weer aan de computer.

Bedankt voor jullie hulp tot nu toe.
 

Bijlagen

Slechts een kleine aanpassing...
Code:
Function AantalVolleDagen2(Tabel As Range, Optional TotAan As Date)
Dim Maand As Integer, Dag As Integer
Dim Teller As Double, VanAf As Date
    
    If TotAan = 0 Then TotAan = Date
    VanAf = DateSerial(Year(TotAan), 1, 1)
    For Teller = 0 To TotAan - VanAf
        Maand = DatePart("m", VanAf + Teller)
        Dag = DatePart("d", VanAf + Teller)
        If Tabel(Dag, Maand) = "" Then
            If i > [COLOR="#FF0000"][B][SIZE=4]1[/SIZE][/B][/COLOR] Then AantalVolleDagen2 = i: i = 0
        Else
            i = i + 1
        End If
    Next
    
End Function
Nu wordt er pas "opnieuw" geteld als het "blok" uit 2 of meer cellen bestaat...
 
Laatst bewerkt:
Code:
Function AantalVolleDagen(Tabel As Range, Optional VanAf As Date)
    Dim Maand As Integer, Dag As Integer, Teller As Double, Start
    If VanAf = 0 Then VanAf = Int(Now)
    For Teller = 0 To VanAf - DateSerial(Year(VanAf), 1, 1)
        Maand = DatePart("m", VanAf - Teller)
        Dag = DatePart("d", VanAf - Teller)
        If Tabel(Dag, Maand) <> "" Then
            If IsEmpty(Start) Then Start = Teller
        Else
            If Not IsEmpty(Start) Then Exit For
        End If
    Next
    AantalVolleDagen = Teller - Start
End Function
 
Sylvester,

Jouw oplossing werkt nu perfect!

Ginger,
Als ik bij jouw oplossing een getal invul op de datum van 30/07 dan komt er in cel N11 een 4 te staan. Iets werkt er dus nog niet goed, maar je hoeft er voor mij niet verder naar te kijken, want ik heb nu in ieder geval een goed werkende oplossing van Sylvester. Misschien is dit overbodige energie die je er anders in gaat steken.

In ieder geval beiden hartelijk bedankt voor al het werk.
 
@Evelthoven, ik zal er niet echt tijd meer insteken want "opgelost = opgelost". Maar ik ben van naturen wél héél nieuwsgierig. Zou jij nog 1x je bijlage willen plaatsen waar je dan die "4" in cel N11 hebt staan? Dan zie ik de situatie die jij voor je hebt en kan ik voor mezelf ff checken wat er dan niet lekker loopt (leer ik zelf ook van nietwaar?).

EDIT: O wacht ff.... Als je dus de 29ste ingevuld hebt staan én daarna de 30ste.... Vreemd?!
EDIT2: Ha ha ha... 12 t/m 15 april wordt nu als laatste complete blok gezien. Was die kleine aanpassing tóch net niet genoeg óf gewoon té snel... ;)
 
Laatst bewerkt:
Beste Ginger,

Ik heb dit topic vanaf de zijlijn gevolgd.
Volgens mij werkt jouw oplossing zo wel helemaal goed (TotAan = Date +1 en de door jou aangepaste >1 weer terug veranderen in >0) :

Code:
Function AantalVolleDagen2(Tabel As Range, Optional TotAan As Date)
Dim Maand As Integer, Dag As Integer
Dim Teller As Double, VanAf As Date
    
    If TotAan = 0 Then TotAan = Date [COLOR="#FF0000"][/COLOR][B]+ 1[/B]    
    VanAf = DateSerial(Year(TotAan), 1, 1)
    For Teller = 0 To TotAan - VanAf
        Maand = DatePart("m", VanAf + Teller)
        Dag = DatePart("d", VanAf + Teller)
        If Tabel(Dag, Maand) = "" Then
            If i > 0 Then AantalVolleDagen2 = i: i = 0
        Else
            i = i + 1
        End If
    Next
    
End Function
 
Laatst bewerkt:
Beste Ginger,

Ik ben de hele avond weg geweest vandaar dat ik nu pas reageer. Op je verzoek stuur ik het bestand nog even mee. Test150730,2.xls

Nogmaals dank voor alles.

Gr.
Eric
 

Bijlagen

Was ik nog vergeten: ook Arrie23 bedankt, jouw oplossing werkt ook perfect.

Gr.
Eric
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan