Esclusione facoltativa



  • Esclusione facoltativa
    di Peppino1 (utente non iscritto) data: 24/06/2013 21:41:13

    Se voglio escludere da due date qualsiasi i sabati le domeniche e i festivi come dovrei impostare la formula, vorrei una formula che non sia obbligatoria l'esclusione, cioè se si vogliono escludere ma che nello stesso tempo se non si vogliono escludere la formula dovrebbe consentire l'inclusione.
    Grazie



  • di Vecchio Frac data: 24/06/2013 21:58:40

    Se non ho capito male, dovresti costruirti una tua Function con un parametro Optional che consenta di scegliere se escludere o no i sabati e le domeniche. Per trattare i festivi avrai bisogno anche di una tabella di appoggio (potrebbe essere anche un semplice array in memoria). Questa opzione non l'ho sviluppata nell'esempio che ti allego.
    Si usa ad esempio così:
    [B1] = conteggio_date(A1; A2; VERO)
    (oppure come funzione dentro un codice VBA) supposto che in A1 e A2 ci siano le due date iniziali e finale.

    Magari si possono usare anche diavolerie come GIORNI.LAVORATIVI.TOT... qui qualche esperto di formule potrà aiutarti più di me :)
     
    'scheletro della Function
    'il parametro opzionale è impostato su False per default
    'se True, esclude dal conteggio i sabati e le domeniche
    Option Explicit
    
    Function conteggio_date(data_iniziale As Date, data_finale As Date, Optional escludi_sab_dom As Boolean = False) As Long
    Dim d As Long, i As Long
        'calcoliamo la differenza tra le date espressa in giorni
        d = data_finale - data_iniziale
        For i = data_iniziale To data_finale
            If escludi_sab_dom And (Weekday(i) = vbSaturday Or Weekday(i) = vbSunday) Then d = d - 1
        Next
        conteggio_date = d
    End Function






  • di Peppino1 (utente non iscritto) data: 24/06/2013 23:52:02

    [B1] = conteggio_date(A1; A2; VERO)

    Scusami, non ho capito niente anche perchè sono ignorante in materia, per esempio cella A1 dall'1/01/2013 cella B1 al 31/01/2013 in C1 cosa dovrei mettere.
    Grazie



  • di Vecchio Frac data: 25/06/2013 11:03:50

    Prendi il codice che ho scritto, e incollalo in un modulo nuovo (alt-F11 per l'editor di codice, inserisci modulo, modifica/incolla).
    Torna nel foglio di lavoro (premi ancora alt-F11).
    Scrivi in A1 la data iniziale, es. 01/01/2013.
    Scrivi in B1 la data finale, es. 31/01/2013.
    In C1 scrivi la formula seguente:
    =conteggio_date(A1;B1;VERO) <-- metti VERO se vuoi escludere sabati e domeniche, FALSO oppure non mettere niente se vuoi includere nel conteggio sabati e domeniche