gg lavorativi



  • gg lavorativi
    di Mex (utente non iscritto) data: 10/06/2013 09:13:18

    Buon giorno,
    è possibile calcolare i giorni che ho lavorato partendo da due date (A1 inizio, A2 fine) escludendo i mercoledì ed i sabato e possibilmente i giorni di chiusura del laboratorio che ho scritto accanto in B1:B15.
    Credo di cavarmela con excel, ma non riesco ad ottenere il numero giusto.
    Grazie



  • di Vecchio Frac data: 10/06/2013 16:06:25

    Con formule o VBA?
    Hai fatto qualche tentativo? Mostra il risultato.




  • gg lavorati
    di Mex (utente non iscritto) data: 10/06/2013 16:27:19

    Buon giorno,

    grazie dell'attenzione.

    Ho scritto in A1 la data del primo giorno di lavoro

    1/2/2013

    in A2 la data di oggi

    10/6/2013

    in B2 e B3 due date di chiusura

    02/06/2013
    25/04/2013

    Per controllare il risultato ho scritto tutte le date in G1:G130.
    Ho scritto 0 accanto ai mercoledì e i sabati ed accanto alle due date di chiusura.

    91 giorni sommando la colonna.

    Più tardi allego il file (sono in laboratorio).

    Grazie





  • di Vecchio Frac data: 10/06/2013 16:55:40

    Io avevo pensato a una cosa più semplice controllando GIORNO.SETTIMANA; mi chiedevo anche se nei giorni di laboratorio scrivevi qualcosa per distinguerli (ad esempio un asterisco o la scritta LAB).
    Ci sono dei maghi delle formule che se si collegano possono soccorrerci; io attendo il file per vedere se riesco a buttarti giù una riga di codice :)





  • di Mister_x (utente non iscritto) data: 10/06/2013 19:34:34

    ciao

    ti passo una funzione da mettere in un modulo e il file versione 2000/03 per vedere il suo utilizzo

    PS attenzione che la data 25/4/13 e' gia' un mercoledi quindi i giorni sono 92 e non 91 da calcolo

    ciao da Mister_x
     
    Function Calcola_dat(dataA As Date, dataB As Date, dateChiusura As Range)
    Dim Tot_giorni
    Dim i As Long
    Dim dateC As Range
    Set dateC = dateChiusura
    
     Tot_giorni = dataB - dataA + 1
       For i = 0 To Tot_giorni
         If Application.Weekday(dataA + i) = 4 Or Application.Weekday(dataA + i) = 7 Then
           Tot_giorni = Tot_giorni - 1
         Else
           For Each date_c In dateC
             If dataA + i = date_c Then Tot_giorni = Tot_giorni - 1
           Next
         End If
       Next i
    Set dateC = Nothing
    Calcola_dat = Tot_giorni
    End Function





  • gg senza merc/sab/fest
    di canapone data: 10/06/2013 22:25:13

    Ciao,

    condivido anche una formula matriciale, da copiare, selezionare e confermare tenendo premuti i tasti control+maiusc+invio

    =SOMMA((SCEGLI(GIORNO.SETTIMANA(RIF.RIGA(INDIRETTO(A1&":"&A2)));1;1;1;0;1;1;0))*(CONTA.SE(B1:B30;RIF.RIGA(INDIRETTO(A1&":"&A2)))=0))

    è un'alternativa alla Udf proposta da Mister_X, che già funziona alla grande.

    Una piccola cosa: il 25 aprile era giovedì, il 91 dell'esempio di Mex è corretto e viene confermato sia dalla Udf e dalla formula.

    Una cosa importante: la formula è un adattamento di una soluzione pubblicata da Harlan Grove ; lo ringraziamo, ma -se non funzionasse- prendetevela con lui.

    Saluti






  • di Mister_x (utente non iscritto) data: 10/06/2013 22:58:29

    ciao canapone

    hai pienamente ragione in base alla funzione, in quanto riguardando il file avevo messo il 24 per prova
    e non ho piu' corretto in 25 risultato mi sono trovato un giorno in piu'

    comunque sappi che non dubitavo che tu con una formula matriciale risolvevi l'arcano problema

    ciao da Mister_x




  • gg
    di Mex (utente non iscritto) data: 11/06/2013 06:28:42

    Buon giorno,

    ho copiato la funzione personalizzata sul modulo del pc ed è perfetta.

    Facile da usare.

    Grazie a tutti


  • Errata corrige
    di Mister_x (utente non iscritto) data: 11/06/2013 12:13:07

    per Mex

    ciao devi apportare una piccola aggiunta alla funzione che hai adottato per un problema che ho riscontrato ieri dopo aver risposto a Canapone

    dove tu vedi

    ((For i = 0 To Tot_giorni))

    devi inserire un -1 perche' altrimenti il for esegue un ciclo in piu' dato che parte da 0 e non da 1 e va a controllare un giorno in piu' da dovuto

    ((For i = 0 To Tot_giorni - 1))

    ciao da Mister_x