Dal numero della settimana ed anno a intervallo date

di il
6 risposte

Dal numero della settimana ed anno a intervallo date

Salve a tutti, chiudo cortesemente un aiuto non riuscendo a trovare soluzione.

In un report ho il dato anno ed il dato settimana, esempio 2025   37

vorrei riuscire a calcolare, partendo dal lunedi ed arrivando a venerdi, il corrispondente intervallo e quindi ottenere il seguente risultato (esempio)

" dal 05/10/2025 al 10/10/2025 "

come posso fare perfavore?

Grazie per la pazienza ed aiuto.

6 Risposte

  • Re: Dal numero della settimana ed anno a intervallo date

    Non so che conti tu abbia fatto, ma la settimana 37 del 2025 è questa:

    settimana 37    8 settembre 2025    14 settembre 2025

    Dove appunto il giorno 8 Settembre è Lunedì ed il 14 è domenica.

    Il giorno 5/10/2025 appartiene alla settimana 40 ed era Domenica, mentre il giorno 10/10/2025 appartiene alla settimana 41 ed era Venerdì, cerca di fare esempi coerenti con quello che chiedi.

    Avevo fatto un catalogo di funzioni sulle manipolazioni delle date... probabilmente questa è quella che ti serve:

    Public Function Week2Date(WeekNo As Long, Optional Anno) As Date
        ' ------------------------------------------------------
        ' Restituisce la data del Lunedì della settimana[WeekNo]
        ' passata come parametro
        ' ------------------------------------------------------
        Dim Jan1             As Date
        Dim Sub1             As Boolean
        Dim ret              As Date
    
        If IsMissing(Anno) Then
            Jan1 = DateSerial(Year(Date), 1, 1)
        Else
            Jan1 = DateSerial(Anno, 1, 1)
        End If
        Sub1 = (Format(Jan1, "ww", VBA.VbDayOfWeek.vbUseSystemDayOfWeek, VBA.VbFirstWeekOfYear.vbUseSystem) = 1)
        ret = DateAdd("ww", WeekNo + Sub1, Jan1)
        ret = ret - Weekday(ret, vbMonday) + 1
        Week2Date = ret
    End Function

    Provala, restituisce correttamente il giorno 8 Settembre 2025, quindi con DateAdd sommi 4 per ottenere il Venerdì.

  • Re: Dal numero della settimana ed anno a intervallo date

    Grazie davvero @Alex
    ho adattato il codice inserendo i campi sorgente dove avevo l'anno e la settimana ed ho sommato 4 come corretto essere.

    Risolto, verificato e report generato.

    Non sarà sicuramente perfetto ma posto il codice che potrebbe servire anche ad altri:

       Anno = Left([ORDINAFASE], 4)
       Jan1 = DateSerial(Anno, 1, 1)
       Sub1 = (Format(Jan1, "ww", VBA.VbDayOfWeek.vbUseSystemDayOfWeek, VBA.VbFirstWeekOfYear.vbUseSystem) = 1)
       ret = DateAdd("ww", Right([ORDINAFASE], 2) + Sub1, Jan1)
       ret = ret - Weekday(ret, vbMonday) + 1
       Week2date = ret
           
       Me.Testo627.Value = "dal " & Week2date & " al " & Week2date + 4

  • Re: Dal numero della settimana ed anno a intervallo date

    Interessante... 

    Non passare mai WeekNo 53 con anno come ad esempio 2005 perchè il 2005 aveva 52 settimane.

    suggerimento: il 28 dicembre è sempre l'ultima settimana dell'anno. fai un controllo su quella data e se restituisce 52 mandi un messaggio di errore se weekNo è 53.

  • Re: Dal numero della settimana ed anno a intervallo date

    18/03/2026 - mobile75 ha scritto:

    Grazie davvero @Alex
    ho adattato il codice inserendo i campi sorgente dove avevo l'anno e la settimana ed ho sommato 4 come corretto essere.

    Risolto, verificato e report generato.

    Ti suggerisco, di non inglobare funzioni di questo tipo in codice rigido, il bello della Funzione che ti ho suggerito è che è RIUSABILE da qualsiasi parte senza dover scrivere altro codice... come hai fatto tu invece se poi la devi richiamare in altri punti devi riscrivere 5 righe... per nulla.

    Solitamente ci si crea delle LIBRERIE di Funzioni standard adatte ad essere riusate proprio per rendere il codice più gestibile.

    Saluti

  • Re: Dal numero della settimana ed anno a intervallo date

    19/03/2026 - sihsandrea ha scritto:

    Interessante... 

    Non passare mai WeekNo 53 con anno come ad esempio 2005 perchè il 2005 aveva 52 settimane.

    suggerimento: il 28 dicembre è sempre l'ultima settimana dell'anno. fai un controllo su quella data e se restituisce 52 mandi un messaggio di errore se weekNo è 53.

    Interessante, farò sicuramente un controllo, grazie.

  • Re: Dal numero della settimana ed anno a intervallo date

    Esistono anni con 53 settimane, che si verificano circa ogni 5 o 6 anni.

    Questo accade quando l'anno (comune o bisestile) inizia di giovedì, oppure è un anno bisestile che inizia di mercoledì, richiedendo una settimana supplementare per completare il conteggio dei giorni secondo lo standard ISO 8601.

    Anni come 2009, 2015, 2020 e questo il 2026.

Devi accedere o registrarti per scrivere nel forum
6 risposte