Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Calcola dei giorni lavorativi

2 views
Skip to first unread message

Luca

unread,
Nov 7, 2006, 3:09:09 AM11/7/06
to
Ho provato a cercare ma nn ho trovato nulla. Mi serve una funzione che
mi permetta di calcolare solo i giorni lavorativi e non i feriali o
festivi presenti in un lasso di tempo, posso anche valutare l'ipotesi
di immettere in un altro foglio i giorni che non mi interessa contare.

Come il 1 novembre, 25-26 dicembre, le varie ferie etc.....

Quindi dal 30 ottobre al 6 novembre ci sono 4 giorni lavorativi


Grazie

Luca

unread,
Nov 7, 2006, 3:18:23 AM11/7/06
to

Luca ha scritto:

Mi spiego meglio, ho provato a usare
=GIORNI.LAVORATIVI.TOT(data_iniz.;data_finale;feste)

Ma se =GIORNI.LAVORATIVI.TOT(G3;H3;G6)
In G3 ho la data espressa come 30/10 in h4 ho la data espressa come
6/11 e in G6 ho la data festiva del 1/11 mi da però valore #NOME?

giovanna

unread,
Nov 7, 2006, 3:32:57 AM11/7/06
to
Scriveva Luca nel
<1162887503....@h48g2000cwc.googlegroups.com>, del 07/11/2006:

>e
>
> Mi spiego meglio, ho provato a usare
> =GIORNI.LAVORATIVI.TOT(data_iniz.;data_finale;feste)
>

> mi da però valore #NOME?

ciao Luca,
vai su menu Strumenti> Componenti aggiuntivi
Metti la spunta a: Strumenti di analisi.
Potrebbe esserti richiesto il CD di installazione.

--
ciao
giovanna
..........................................
http://www.riolab.org
..........................................


Luca

unread,
Nov 7, 2006, 7:28:11 AM11/7/06
to
Non ho il CD con me.... c'è una scorciatoia?????????''

Luca

unread,
Nov 7, 2006, 7:28:14 AM11/7/06
to

giovanna

unread,
Nov 7, 2006, 8:37:56 AM11/7/06
to
Scriveva Luca nel
<1162902494.9...@b28g2000cwb.googlegroups.com>, del
07/11/2006:

> Non ho il CD con me.... c'è una scorciatoia?????????''

bèh..chiamarla scorciatoia..... :-)
vedi qui:

delledate
http://www.prodomosua.eu/zips/delledate.xls

la tua formula sarebbe (esclude sabati, domeniche e festivi):
=INT((6*fine)/7)-INT((6*inizio+1)/7)-INT((fine-7)/7)+INT((inizio-8)/7)+1-SOMMA(1*((festività*(1*RESTO(festività;7)>1))>=inizio))+SOMMA(1*((festività*(1*RESTO(festività;7)>1))>fine))
matriciale [ctrl+maiusc+invio]

con fine si intende la data finale dell'interv di tempo
con inizio quella iniziale
con festività l'intervallo comprendente i festivi.

Luca

unread,
Nov 7, 2006, 9:59:19 AM11/7/06
to
Troppo complicato aspetto il cd di office :D


giovanna ha scritto:

fernando cinquegrani

unread,
Nov 7, 2006, 10:04:40 AM11/7/06
to
[Luca] scrive in
http://www.google.it/groups?threadm=1162911559....@m73g2000cwd.googlegroups.com

> Troppo complicato aspetto il cd di office :D


ROTFL!
.f


giovanna

unread,
Nov 7, 2006, 12:20:40 PM11/7/06
to
Scriveva Luca nel
<1162911559....@m73g2000cwd.googlegroups.com>, del 07/11/2006:

> Troppo complicato aspetto il cd di office :D
>

oh, Luca, ma dove è complicato?
allora:
in A1 digita la tua data iniziale
in A2 la tua data finale
nell'intervallo H2:H10 digiti le date dei festivi es 1/11 ....
quindi la formula di Fernando diventa:

=INT((6*A2)/7)-INT((6*A1+1)/7)-INT((A2-7)/7)+INT((A1-8)/7)+1-SOMMA(1*(($H$2:$H$10*(1*RESTO($H$2:$H$10;7)>1))>=A1))+SOMMA(1*(($H$2:$H$10*(1*RESTO($H$2:$H$10;7)>1))>A2))

matriciale, quindi da confermare anziché con il solo tasto Invio, con
Crtl+Maiusc +Invio.
ecco fatto!

PS: dicevo "chiamarla scorciatoia".... mi sembrava riduttivo!
Ti permette di risolvere senza Componente aggiuntivo. Dici poco?!?!?

elby

unread,
Nov 7, 2006, 2:08:53 PM11/7/06
to

Luca ha scritto:

> Troppo complicato aspetto il cd di office :D

In attesa che ti arrivi il CD prova questa Funzione Definita
dall'Utente DiffGiorniLavorativi da me creata ( tranne che per la
componente Lunedì di Pasqua ) , che evita , peraltro, di avere sul
foglio di lavoro qualsiasi elenco di festività. Gestisce l'opzione
sabato non lavorativo, l'opzione patrono e il lunedì di Pasqua ( in
maniera perpetua ). Una volta incollato il codice sottostante in un
modulo di una cartella di lavoro, la ritroverai tra le funzioni del
foglio di lavoro ( Inserisci >> Funzione...>>seleziona la categoria
Definite dall'Utente >>DiffGiorniLavorativi ).
Accetta 4 argomenti dei quali solo i primi 2 obbligatori : 1) data di
inizio passata con riferimento di cella oppure con una qualsiasi
sintassi valida ( per es. "04-nov-2006" NB. mettere le virgolette). 2)
Data fine ( sintassi come punto 1 ). 3)SabatoNonLav: inserire VERO se
sabato non lavorativo altrimenti FALSO; se omesso considera il sabato
come non lavorativo. 4) Data di festa patronale (sintassi come punto
1); se omesso considera 1 gennaio che è già festivo. Nel caso la data
di inizio sia successiva a quella di fine restituisce #VALORE!

Function DiffGiorniLavorativi(Inizio As Date, Fine As Date, Optional
SabatoNonLav _
As Boolean = True, Optional Patrono As
Date = "1-gen") As Long
Dim lngGiorniLavorativi As Long
Dim dtmMiaData As Date
If Fine >= Inizio Then

For dtmMiaData = Inizio To Fine
If GiornoNonLavorativo(dtmMiaData, SabatoNonLav, Patrono) =
False Then
lngGiorniLavorativi = lngGiorniLavorativi + 1
End If
Next dtmMiaData
DiffGiorniLavorativi = lngGiorniLavorativi - 1
Else
DiffGiorniLavorativi = Null
End If
End Function

Function EASTER(Yr As Integer) As Long
' Dal sito:
http://longre.free.fr/pages/form/dateheure.htm#Jours_fériés.
Dim Century As Integer
Dim Sunday As Integer
Dim Epact As Integer
Dim Golden As Integer
Dim LeapDayCorrection As Integer
Dim SynchWithMoon As Integer
Dim N As Integer

Golden = (Yr Mod 19) + 1
Century = Yr \ 100 + 1
LeapDayCorrection = 3 * Century \ 4 - 12
SynchWithMoon = (8 * Century + 5) \ 25 - 5
Sunday = 5 * Yr \ 4 - LeapDayCorrection - 10
Epact = (11 * Golden + 20 + SynchWithMoon - LeapDayCorrection) Mod 30
If Epact < 0 Then Epact = Epact + 30
If (Epact = 25 And Golden > 11) Or Epact = 24 Then Epact = Epact + 1
N = 44 - Epact
If N < 21 Then N = N + 30
N = N + 7 - ((Sunday + N) Mod 7)
EASTER = DateSerial(Yr, 3, N)

End Function


'Creata da Elio Buonocore elib...@tin.it il 9 feb 2005
Function GiornoNonLavorativo(dtmMiaData As Date, _
Optional SabatoNonLav As Boolean = False, _
Optional dtmPatrono As Date = "1-gen") As Boolean
GiornoNonLavorativo = False
Select Case Format(dtmMiaData, "d-mmm")
Case Is = "1-gen", "6-gen", "25-apr", "1-mag", "2-giu", "15-ago",
_
"1-nov", "8-dic", "25-dic", "26-dic", Format(dtmPatrono,
"d-mmm")
GiornoNonLavorativo = True
Exit Function
End Select
Select Case WorksheetFunction.Weekday(dtmMiaData, 2)
Case Is = 7
GiornoNonLavorativo = True
Exit Function
Case Is = 6
If SabatoNonLav = True Then
GiornoNonLavorativo = True
Exit Function
End If
End Select
If WorksheetFunction.Weekday(dtmMiaData, 2) = 1 Then
If Month(dtmMiaData) = 3 Or Month(dtmMiaData) = 4 Then
If dtmMiaData = EASTER(Year(dtmMiaData)) + 1 Then
GiornoNonLavorativo = True
Exit Function
End If
End If
End If
End Function

'Ciao Elio

0 new messages