GiorniLavorativi ( dataInizio ; dataFine ) Risolto!
Moderatore: Moderatori
-
- Messaggi: 3616
- Iscritto il: sabato 7 febbraio 2004, 1:00
- Località: Roma
- Contatta:
GiorniLavorativi ( dataInizio ; dataFine )
Questa funzione personalizzata può servire a chi voglia contare i giorni lavorativi tra una data ed un'altra, escludendo i sabati e le domeniche.
/*
GiorniLavorativi ( dataInizio ; dataFine )
parametri:
dataInizio = data inizio lavoro
dataFine = data fine lavoro
restituisce in formato lista valori tutte le date lavorative, escludendo il sabato e la domenica, comprese od uguali alle due date;
se le due date coincidono e sono lavorative, il risultato è la prima data
*/
Consenti([
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; dataInizio );
risultato = Casi ( dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
---------------------------------------------------------------------------
La funzione restituisce, in formato testo, una serie di date;
per esempio: GiorniLavorativi ( "09/02/2007" ; "19/02/2007" ) restituisce:
09/02/2007
12/02/2007
13/02/2007
14/02/2007
15/02/2007
16/02/2007
19/02/2007
Per poi eventualmente contare i giorni, basterà usare la funzione: ConteggioValore
tipo:
ConteggioValore ( GiorniLavorativi ( dataInizio ; dataFine ) )
/*
GiorniLavorativi ( dataInizio ; dataFine )
parametri:
dataInizio = data inizio lavoro
dataFine = data fine lavoro
restituisce in formato lista valori tutte le date lavorative, escludendo il sabato e la domenica, comprese od uguali alle due date;
se le due date coincidono e sono lavorative, il risultato è la prima data
*/
Consenti([
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; dataInizio );
risultato = Casi ( dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
---------------------------------------------------------------------------
La funzione restituisce, in formato testo, una serie di date;
per esempio: GiorniLavorativi ( "09/02/2007" ; "19/02/2007" ) restituisce:
09/02/2007
12/02/2007
13/02/2007
14/02/2007
15/02/2007
16/02/2007
19/02/2007
Per poi eventualmente contare i giorni, basterà usare la funzione: ConteggioValore
tipo:
ConteggioValore ( GiorniLavorativi ( dataInizio ; dataFine ) )
Raybaudi FMP 12 Adv. Windows XP SP3
-
- Messaggi: 78
- Iscritto il: martedì 6 aprile 2010, 0:36
Re: GiorniLavorativi ( dataInizio ; dataFine )
Volendo inserire i festivi quindi da non conteggiare ??????
File Maker pro 14 advance; Windows 10
- PIG-NAH
- Messaggi: 2564
- Iscritto il: martedì 7 agosto 2007, 2:00
- Località: BIG BANG
Re: GiorniLavorativi ( dataInizio ; dataFine )
Il calcolo che ti fa saltare i sabati e le domeniche è questo sotto:
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; dataInizio );
Prova a cancellarlo oppure sostituiscilo con:
datainizio = datainizio
Dipende da come reagisce datainizio con la parte ricorsiva della funzione qui sotto in quanto è sia parametro che variabile:
risultato = Casi ( dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
Molto più semplice è fare datafine - datainizio risultato numero.
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; dataInizio );
Prova a cancellarlo oppure sostituiscilo con:
datainizio = datainizio
Dipende da come reagisce datainizio con la parte ricorsiva della funzione qui sotto in quanto è sia parametro che variabile:
risultato = Casi ( dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
Molto più semplice è fare datafine - datainizio risultato numero.
FM8 ADV XP SP3
-
- Messaggi: 78
- Iscritto il: martedì 6 aprile 2010, 0:36
Re: GiorniLavorativi ( dataInizio ; dataFine )
Forse non mi sono spiegato bene. Nell'intervallo tra le due date vorrei eliminare dal conteggio oltre i sabati e le domeniche anche alcuni giorni festivi presi da una lista. Come faccio ?
PIG-NAH ha scritto:Il calcolo che ti fa saltare i sabati e le domeniche è questo sotto:
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; dataInizio );
Prova a cancellarlo oppure sostituiscilo con:
datainizio = datainizio
Dipende da come reagisce datainizio con la parte ricorsiva della funzione qui sotto in quanto è sia parametro che variabile:
risultato = Casi ( dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
Molto più semplice è fare datafine - datainizio risultato numero.
File Maker pro 14 advance; Windows 10
- PIG-NAH
- Messaggi: 2564
- Iscritto il: martedì 7 agosto 2007, 2:00
- Località: BIG BANG
Re: GiorniLavorativi ( dataInizio ; dataFine )
Devi creare una lista valori "LV" contenente le date delle feste aggiuntive:
Consenti([
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; DataInizio ) ;
risultato = Casi ( ContaRicorrenze ( ElementiListeValori ( Get ( NomeFile ) ;"LV" ) ; RicavaComeTesto ( DataInizio ) ) ; "" & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
Consenti([
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; DataInizio ) ;
risultato = Casi ( ContaRicorrenze ( ElementiListeValori ( Get ( NomeFile ) ;"LV" ) ; RicavaComeTesto ( DataInizio ) ) ; "" & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
FM8 ADV XP SP3
-
- Messaggi: 78
- Iscritto il: martedì 6 aprile 2010, 0:36
Re: GiorniLavorativi ( dataInizio ; dataFine )
Ho creato una lista valori chiama LV ed inserendo i seguenti valori
01/01/2016
06/01/2016
12/01/2016
18/01/2016
Ho provato mettendo dataInizio = 01/01/2016 e data fine 31/12/2016 ho creato un campo calcolato inserendo ConteggioValore ( GiorniLavorativi ( DataInizio ; DataFine ) ) dove GiorniLavorativi e la tua funzione personalizzata ma sembra che la lista valori non funzioni perché mi da sempre lo stesso valore dove sbaglio?
01/01/2016
06/01/2016
12/01/2016
18/01/2016
Ho provato mettendo dataInizio = 01/01/2016 e data fine 31/12/2016 ho creato un campo calcolato inserendo ConteggioValore ( GiorniLavorativi ( DataInizio ; DataFine ) ) dove GiorniLavorativi e la tua funzione personalizzata ma sembra che la lista valori non funzioni perché mi da sempre lo stesso valore dove sbaglio?
PIG-NAH ha scritto:Devi creare una lista valori "LV" contenente le date delle feste aggiuntive:
Consenti([
dataInizio = Casi ( GiornodiSettimana ( dataInizio ) = 7 ; dataInizio + 2 ; GiornodiSettimana ( dataInizio ) = 1 ; dataInizio + 1 ; DataInizio ) ;
risultato = Casi ( ContaRicorrenze ( ElementiListeValori ( Get ( NomeFile ) ;"LV" ) ; RicavaComeTesto ( DataInizio ) ) ; "" & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio < dataFine ; dataInizio & ¶ & GiorniLavorativi ( dataInizio + 1 ; dataFine ) ; dataInizio = dataFine ; dataInizio ; "" )
];
risultato
)
File Maker pro 14 advance; Windows 10
- PIG-NAH
- Messaggi: 2564
- Iscritto il: martedì 7 agosto 2007, 2:00
- Località: BIG BANG
Re: GiorniLavorativi ( dataInizio ; dataFine )
Calcolo non memorizzato con risultato testo.
FM8 ADV XP SP3
-
- Messaggi: 78
- Iscritto il: martedì 6 aprile 2010, 0:36
Re: GiorniLavorativi ( dataInizio ; dataFine ) Risolto!
Grazie funziona tutto. Ma ancora un altro problema. Ho inserito della campi per ogni scheda mensile in cui mi faccio effettuare un calcolo con la formula da Te suggerita sui giorni lavorati per mese per ogni dipendente. Il problema è inserire i giorni di assenza sia singolarmente e sia eventuali malattie. Potrei fare il conteggio dei campi di assenza e delle malattie ma mi risulta complicato. Poi avrei comunque un altro problema che nella lista dei giorni lavorati non comparirebbero. Si potrebbe modificare la funzione facendogli tenere conto anche di questi campi e che quindi dovrebbero essere esclusi dalla lista dei giorni lavorati ?PIG-NAH ha scritto:Calcolo non memorizzato con risultato testo.
Un'altra finezza come faccio a settare quella lista (giorni lavorati) facendo comparire vicino alla data anche il giorno della settimana ?
Ti allego il file
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
File Maker pro 14 advance; Windows 10
- PIG-NAH
- Messaggi: 2564
- Iscritto il: martedì 7 agosto 2007, 2:00
- Località: BIG BANG
Re: GiorniLavorativi ( dataInizio ; dataFine )
Il file non lo posso aprire perchè ho la versione 8 di FM.
Comunque ciò che mi stai chiedendo è una consulenza e non ne faccio ne aggratis e ne a pago.
Comunque ciò che mi stai chiedendo è una consulenza e non ne faccio ne aggratis e ne a pago.
FM8 ADV XP SP3