Funzioni di Excel WORKDAY e NETWORKDAYS per calcolare i giorni lavorativi

  • Condividi Questo
Michael Brown

Questa breve esercitazione spiega l'uso delle funzioni di Excel NETWORKDAYS e WORKDAY per calcolare i giorni lavorativi con parametri personalizzati di fine settimana e festività.

Microsoft Excel offre due funzioni appositamente studiate per il calcolo dei giorni feriali: WORKDAY e NETWORKDAYS.

Il GIORNO DI LAVORO restituisce una data di N giorni lavorativi nel futuro o nel passato e può essere utilizzata per aggiungere o sottrarre giorni lavorativi a una data.

Utilizzando il GIORNATE IN RETE è possibile calcolare il numero di giorni lavorativi tra due date specificate.

In Excel 2010 e versioni successive, sono disponibili modifiche più potenti delle suddette funzioni, WORKDAY.INTL e NETWORKDAYS.INTL, che consentono di definire quali e quanti giorni sono giorni di fine settimana.

Diamo ora un'occhiata più da vicino a ciascuna funzione e vediamo come utilizzarla per calcolare i giorni lavorativi nei fogli di lavoro di Excel.

    Funzione WORKDAY di Excel

    La funzione GIORNO DI LAVORO di Excel restituisce una data che è un determinato numero di giorni lavorativi in anticipo o precedente alla data di inizio, escludendo i fine settimana e le festività specificate dall'utente.

    La funzione GIORNO DI LAVORO serve a calcolare i giorni di lavoro, le tappe e le scadenze in base al calendario lavorativo standard, con il sabato e la domenica come giorni del fine settimana.

    WORKDAY è una funzione integrata in Excel 2007 - 365. Nelle versioni precedenti, è necessario attivare il ToolPak Analisi.

    Quando si utilizza WORKDAY in Excel, è necessario inserire i seguenti argomenti:

    GIORNO DI LAVORO(data_inizio, giorni, [giorni festivi])

    I primi due argomenti sono obbligatori e l'ultimo è facoltativo:

    • Data_inizio - la data da cui iniziare a contare i giorni della settimana.
    • Giorni - il numero di giorni lavorativi da aggiungere o sottrarre a data_inizio. Un numero positivo restituisce una data futura, un numero negativo una data passata.
    • Vacanze - un elenco opzionale di date che non devono essere conteggiate come giorni lavorativi. Può essere un intervallo di celle contenenti le date che si desidera escludere dai calcoli, oppure una matrice costante di numeri seriali che rappresentano le date.

    Ora che si conoscono le nozioni di base, vediamo come utilizzare la funzione GIORNO DI LAVORO nei fogli di lavoro di Excel.

    Come usare WORKDAY per aggiungere/sottrarre giorni lavorativi alla data

    Per calcolare i giorni lavorativi in Excel, seguire queste semplici regole:

    • A aggiungere giorni lavorativi, inserire un numero positivo come giorni di una formula WORKDAY.
    • A sottrarre giorni lavorativi, utilizzare un numero negativo nel campo giorni argomento.

    Supponiamo di avere una data di inizio nella cella A2, un elenco di giorni festivi nelle celle B2:B5 e di voler trovare le date di 30 giorni lavorativi nel futuro e nel passato. È possibile farlo utilizzando le seguenti formule:

    Per aggiungere 30 giorni lavorativi alla data di inizio, esclusi i giorni festivi in B2:B5:

    =GIORNO LAVORATIVO(A2, 30, B2:B5)

    Sottrarre 30 giorni lavorativi dalla data di inizio, esclusi i giorni festivi in B2:B5:

    =GIORNO LAVORATIVO(A2, -30, B2:B5)

    Per calcolare i giorni della settimana in base alla data corrente utilizzare la funzione TODAY() come data di inizio:

    Per aggiungere 30 giorni lavorativi alla data odierna:

    =GIORNO LAVORATIVO(OGGI(), 30)

    Per sottrarre 30 giorni lavorativi dalla data odierna:

    =GIORNO LAVORATIVO(OGGI(), -30)

    Per fornire la data di inizio direttamente alla formula, utilizzare la funzione DATA:

    =GIORNO LAVORATIVO(DATA(2015,5,6), 30)

    La seguente schermata mostra i risultati di tutte queste formule e di altre formule del GIORNO DI LAVORO:

    Naturalmente, è possibile inserire il numero di giorni di lavoro da aggiungere o sottrarre alla data di inizio in una cella e poi fare riferimento a tale cella nella formula. Ad esempio, è possibile inserire il numero di giorni di lavoro da aggiungere o sottrarre alla data di inizio in una cella:

    =GIORNO LAVORATIVO(A2, C2)

    Dove A2 è la data di inizio e C2 è il numero di giorni non festivi in ritardo (numeri negativi) o in anticipo (numeri positivi) rispetto alla data di inizio, senza festività da escludere.

    Suggerimento: in Excel 365 e 2021, è possibile utilizzare WORKDAY in combinazione con SEQUENCE per generare una serie di giorni lavorativi.

    Funzione WORKDAY.INTL di Excel

    WORKDAY.INTL è una modifica più potente della funzione WORKDAY che funziona con parametri personalizzati per il fine settimana Come WORKDAY, restituisce una data che corrisponde a un determinato numero di giorni lavorativi nel futuro o nel passato, ma consente di determinare quali giorni della settimana devono essere considerati giorni del fine settimana.

    La funzione WORKDAY.INTL è stata introdotta in Excel 2010 e non è quindi disponibile nelle versioni precedenti di Excel.

    La sintassi della funzione WORKDAY.INTL di Excel è la seguente:

    WORKDAY.INTL(data_inizio, giorni, [fine settimana], [giorni festivi])

    I primi due argomenti sono obbligatori e sono simili a quelli di WORKDAY:

    Data_inizio - la data iniziale.

    Giorni - il numero di giorni lavorativi prima (valore negativo) o dopo (valore positivo) la data di inizio. Se il valore giorni è fornito come numero decimale, viene troncato al numero intero.

    Gli ultimi due argomenti sono facoltativi:

    Fine settimana - specifica quali giorni della settimana devono essere conteggiati come giorni del fine settimana. Può essere un numero o una stringa, come mostrato di seguito.

    Numero Giorni del fine settimana
    1 o omesso Sabato, domenica
    2 Domenica, lunedì
    3 Lunedì, martedì
    4 Martedì, mercoledì
    5 Mercoledì, giovedì
    6 Giovedì, venerdì
    7 Venerdì, sabato
    11 Solo domenica
    12 Solo lunedì
    13 Solo martedì
    14 Solo mercoledì
    15 Solo giovedì
    16 Solo venerdì
    17 Solo sabato

    Stringa del fine settimana - una serie di sette 0 e 1 che rappresentano sette giorni della settimana, a partire dal lunedì. 1 rappresenta un giorno non lavorativo e 0 rappresenta un giorno lavorativo. Ad esempio:

    • "0000011" - Sabato e domenica sono fine settimana.
    • "1000001" - Lunedì e domenica sono fine settimana.

    A prima vista, le stringhe di fine settimana possono sembrare superflue, ma personalmente preferisco questo metodo perché si può creare una stringa di fine settimana al volo senza dover ricordare alcun numero.

    Vacanze - un elenco opzionale di date che si desidera escludere dal calendario dei giorni lavorativi, che può essere un intervallo di celle contenenti le date o una matrice costante di valori seriali che rappresentano tali date.

    Utilizzo di WORKDAY.INTL in Excel - esempi di formule

    La mole di teoria che abbiamo appena discusso può sembrare piuttosto complicata e confusa, ma provare le formule renderà le cose molto semplici.

    Nel nostro set di dati, con la data di inizio nella cella A2 e un elenco di festività in A5:A8, calcoliamo i giorni lavorativi con i fine settimana personalizzati.

    A aggiungere 30 giorni lavorativi alla data di inizio, venerdì e sabato contati come fine settimana e giorni festivi in A5:A8 esclusi:

    =GIORNO LAVORATIVO.INTL(A2, 30, 7, A5:A8)

    o

    =WORKDAY.INTL(A2, 30, "0000110", A5:A8)

    A sottrarre 30 giorni lavorativi dalla data di inizio, domenica e lunedì contati come fine settimana e giorni festivi in A5:A8 esclusi:

    =GIORNO LAVORATIVO.INTL(A2, -30, 2, A5:A8)

    o

    =WORKDAY.INTL(A2, -30, "1000001", A5:A8)

    Per aggiungere 10 giorni lavorativi al data corrente La domenica è l'unico giorno del fine settimana, non ci sono vacanze:

    =GIORNO.INTL(OGGI(), 10, 11)

    o

    =WORKDAY.INTL(A2, 10, "0000001")

    Nel vostro foglio Excel, le formule possono essere simili a queste:

    Nota: Entrambe le funzioni di Excel WORKDAY e WORKDAY.INTL restituiscono numeri seriali che rappresentano le date. Per visualizzare questi numeri come date, selezionare le celle con i numeri e premere Ctrl+1 per aprire la finestra di dialogo Formattare le celle Sulla finestra di dialogo Numero selezionare la scheda Data nel Categoria Per i passi dettagliati, vedere Come cambiare il formato della data in Excel.

    Errori di Excel WORKDAY e WORKDAY.INTL

    Se la formula WORKDAY o WORKDAY.INTL di Excel restituisce un errore, il motivo è probabilmente uno dei seguenti:

    #NUM! si verifica un errore se:

    • una combinazione di data_inizio e giorni risulta una data non valida, oppure
    • fine settimana nella funzione WORKDAY.INTL non è valido.

    #VALORE! si verifica un errore se:

    • data_inizio o qualsiasi valore in vacanze non è una data valida, oppure
    • giorni è un argomento non numerico.

    Funzione di Excel GIORNI IN RETE

    La funzione GIORNI IN RETE di Excel restituisce il numero di giorni lavorativi tra due date, esclusi i fine settimana e, facoltativamente, le festività specificate dall'utente.

    La sintassi di Excel NETWORKDAYS è intuitiva e facile da ricordare:

    GIORNI IN RETE(data_inizio, data_fine, [festività])

    I primi due argomenti sono obbligatori e il terzo è facoltativo:

    • Data_inizio - data iniziale da cui iniziare a contare i giorni lavorativi.
    • Data_fine - la fine del periodo per il quale si contano i giorni lavorativi.

    Sia la data di inizio che quella di fine vengono conteggiate nel numero di giorni lavorativi restituiti.

    • Vacanze - un elenco opzionale di giorni festivi che non devono essere conteggiati come giorni lavorativi.

    Come utilizzare i giorni di rete in Excel - esempio di formula

    Supponiamo di avere un elenco di giorni festivi nelle celle A2:A5, le date di inizio nella colonna B, le date di fine nella colonna C e di voler sapere quanti giorni lavorativi ci sono tra queste date. La formula appropriata NETWORKDAYS è facile da trovare:

    =GIORNI LAVORATIVI IN RETE(B2, C2, $A$2:$A$5)

    Si noti che la funzione RETE GIORNI di Excel restituisce un valore positivo se la data iniziale è inferiore alla data finale e un valore negativo se la data finale è più recente della data iniziale (come nella riga 5):

    Funzione Excel NETWORKDAYS.INTL

    Come la funzione GIORNI IN RETE, la funzione GIORNI IN RETE.INTL di Excel calcola il numero di giorni della settimana tra due date, ma consente di specificare quali giorni devono essere contati come giorni del fine settimana.

    La sintassi della funzione NETWORKDAYS.INTL è molto simile a quella di NETWORKDAYS, con l'eccezione del parametro aggiuntivo [weekend] che indica quali giorni della settimana devono essere conteggiati come fine settimana.

    NETWORKDAYS.INTL( data_inizio, data_fine, [weekend], [festività] )

    Il fine settimana può accettare un numero o una stringa. I numeri e le stringhe del fine settimana sono esattamente gli stessi del metodo fine settimana della funzione WORKDAY.INTL.

    La funzione GIORNI IN RETE.INTL è disponibile in Excel 365 - 2010.

    Utilizzo di NETWORKDAYS.INTL in Excel - esempio di formula

    Utilizzando l'elenco di date dell'esempio precedente, calcoliamo il numero di giorni lavorativi tra due date in cui la domenica è l'unico giorno del fine settimana. A questo scopo, si digita il numero 11 nella casella di dialogo fine settimana della formula NETWORKDAYS.INTL o creare una stringa di sei 0 e un 1 ("0000001"):

    =NETWORKDAYS.INTL(B2, C2, 11, $A$2:$A$5)

    Oppure

    =NETWORKDAYS.INTL(B2, C2, "0000001", $A$2:$A$5)

    La seguente schermata dimostra che entrambe le formule danno risultati assolutamente identici.

    Come evidenziare i giorni lavorativi in Excel

    Utilizzando le funzioni WORKDAY e WORKDAY.INTL, è possibile non solo calcolare i giorni lavorativi nei fogli di lavoro di Excel, ma anche evidenziarli come richiesto dalla logica aziendale. A tale scopo, si crea una regola di formattazione condizionale con una formula WORKDAY o WORKDAY.INTL.

    Ad esempio, in un elenco di date nella colonna B, evidenziamo solo le date future che si trovano entro 15 giorni lavorativi dalla data odierna, escludendo due festività nelle celle A2:A3. La formula più ovvia che viene in mente è la seguente:

    =AND($B2>OGGI(), $B2<=OGGIORNO(OGGI(), 15, $A$2:$A$3))

    La prima parte del test logico esclude le date passate, cioè si controlla se una data è uguale o maggiore di oggi: $B2>TODAY(). E nella seconda parte si verifica se una data non è più di 15 giorni feriali nel futuro, esclusi i giorni del fine settimana e le festività specificate: $B2<=GIORNO(OGGI(), 15, $A$2:$A$3)

    La formula sembra corretta, ma una volta creata una regola basata su di essa, ci si renderà conto che evidenzia le date sbagliate:

    Cerchiamo di capire perché ciò accade. Il problema non è la funzione GIORNO DI LAVORO, come qualcuno potrebbe concludere. La funzione è corretta, ma... cosa fa in realtà? Restituisce una data a 15 giorni lavorativi da oggi, escludendo i giorni del fine settimana (sabato e domenica) e le festività nelle celle A2:A3.

    Ok, e cosa fa la regola basata su questa formula? Evidenzia TUTTE le date che sono uguali o superiori a oggi e inferiori alla data restituita dalla funzione WORKDAY. Vedete? Tutte le date! Se non volete colorare i fine settimana e i giorni festivi, dovete dire esplicitamente a Excel di non farlo. Quindi, aggiungiamo altre due condizioni alla nostra formula:

    • La funzione WEEKDAY per escludere i fine settimana: WEEKDAY($B2, 2)<6
    • La funzione COUNTIF per escludere le vacanze: COUNTIF($A$2:$A$3, $B2)=0

    Come dimostrato dalla schermata seguente, la formula migliorata funziona perfettamente:

    =AND($B2>OGGI(), $B2<=GIORNO LAVORATIVO(OGGI(), 15, $A$2:$A$3), COUNTIF($A$2:$A$3, $B2)=0, WEEKDAY($B2, 2)<6)

    Come vedete, le funzioni WORKDAY e WORKDAY.INTL consentono di calcolare i giorni lavorativi in Excel in modo semplice e veloce. Naturalmente, le formule della vostra vita reale saranno probabilmente più sofisticate, ma conoscere le nozioni di base vi aiuterà enormemente, perché potrete ricordare solo una piccola serie di cose essenziali e ricavare il resto. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.