Lista dei giorni lavorativi fra due date

Anonimo
2010-04-20T18:44:12+00:00

Ciao a tutti, e grazie alla buon anima che potrà aiutarmi.

Vi espongo il problema:

Importo in Excel una lista di date [Data Inizio] e [Data Fine] desidererei ottenere la lista (in pratica le date) dei giorni lavorativi e non il numero di giorni che per altro già calcolo.

Ora il mio cruccio sta nell'elaborare la lista dei giorni fra le due date ma solamente quelli lavorativi quindi si escluda i Sabati e le Domeniche oltre alle Feste che compaiono nella colonna "A" .

Faccio un esempio di come dovrebbe funzionare, ammettiamo il caso esposto qui sotto, il risultato dovrebbe essere la colonna "Giorni".

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

2 risposte

Ordina per: Più utili
  1. Anonimo
    2010-04-23T07:07:21+00:00

    Ciao grazie Paolo,

    ma forse non sono stato chiaro, [Data Inizio in A2] [Data Fine in B2] [Giorni Lavorativi in C2] e l'intervallo rappresentato da feste "riportato sopra" nell'intervallo K2:K23 sono i miei dati di input.

    Quello che devo ottenere é la lista delle date da considerare nell'intervallo fra [Data Inizio] [Data Fine].

    In pratica per esempio:

    [Data Inizio] [Data Fine] [Giorni Lavorativi] 

    29.03.2010    06.04.2010            4

    Il risultato atteso in una qualsiasi colonna sarebbe il seguente:

    [Risultato]

    29.03.2010

    30.03.2010

    31.03.2010

    06.04.2010


    Ora ho fatto una funzione in VBA che mi soddisfa ma solo parzialmente :

    (Se a qualcuno interessasse é la seguente):

    ****************************************

    Sub ScriviDateInColonna()

    'È data la DataInizio e DataFine si scrivono le date fino alla DataFine

    Dim Giorni As Integer

    Dim DataInizio As Date

    Dim DataFine As Date

    Dim Riga As Integer

    DataInizio = Range("A2")  'Locazione della cella contenente la data di inizio

    DataFine = Range("B2")    'Locazione della cella contenente la data fine

    Giorni = Range("C2")        'Locazione della cella contenente il numero di giorni

    i = Giorni

    Riga = 2

    Worksheets("Sheet1").Range("F" & Riga) = DataInizio 'Locazione delle celle contenente la lista delle date

    Do While DataInizio <> DataFine

        Riga = Riga + 1

            Worksheets("Sheet1").Range("F" & Riga) = WorksheetFunction.WorkDay(DataInizio, 1, Range("k2:k23")) 'Nell'intervallo vi sono la lista dei giorni di festa

            If Worksheets("Sheet1").Range("F" & Riga) = Worksheets("Sheet1").Range("F" & Riga - 1) Then Riga = Riga - 1

        i = i - 1

        DataInizio = DataInizio + 1

    Loop

    DataInizio = DataFine

    End Sub

    ****************************************

    Il problema di questa funzione é che il risultato

    [Risultato]

    29.03.2010

    30.03.2010

    31.03.2010

    06.04.2010

    06.04.2010

    Mi scrive in doppio l'ultima data ma solamente in alcuni casi in effetti testandola su più date l'effetto di doppia data si verifica

    quando la data fine é immediatamente successiva ad un giorno di festa. (Almeno per adesso credo sia così)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-04-22T18:30:09+00:00

    Ciao 19Andy63, è sufficiente applicare la funzione

    GIORNI.LAVORATIVI.TOT(data_iniziale;data_finale;vacanze)

    come terzo argomento "vacanze" va indicato l'intervallo delle feste, nel tuo caso potrebbe essere A2:A23.


    fai sapere, grazie

    ciao paoloard

    http://riolab.org

    ***********************************************

    Se la risposta ti ha aiutato clicca su "Vota come Utile".

    Se ha risolto il problema clicca su "Segna come Risposta".

    La risposta è stata utile?

    0 commenti Nessun commento