Condividi:        

calcolare il tempo esprimendolo minuti tra due date

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

calcolare il tempo esprimendolo minuti tra due date

Postdi pandistelle68 » 01/04/09 15:55

Buongiorno,
il mio problema consiste nel calcolare la durata di un disservizio esprimendolo in minuti. Ai fini del calcolo vanno considerati tutti i giorni ad eccezione delle domeniche e dei festivi. La durata della giornata è dalle 8 alle 20 dal lunedi' al venerdi' e dalle 8 alle 14:00 il sabato.
Vi rignrazio per l'aiuto pandistelle68
pandistelle68
Newbie
 
Post: 3
Iscritto il: 01/04/09 15:46

Sponsor
 

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi pandistelle68 » 01/04/09 20:42

Scusate vorrei aggiungere qualche dettaglio: il calcolo va eseguito con excel.
Io ho fatto alcune prove seguendo la strada di determinare i giorni lavorativi con la funzione giorni.lavorativi.tot tuttavia vi è il problema di determinare le giornate che ricadano di sabato non festive.
Ovviamente se vi sono strade più comode e risuolutive sono gradite
Grazie
pandistelle68
Newbie
 
Post: 3
Iscritto il: 01/04/09 15:46

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi tutamimetica » 02/04/09 18:43

Ti invio quanto richiesto con il file allegato.
Senz'altro c'è da risolvere il problema della festività, ma mi devi dire qualcosa in più.
tuta
Allegati

[L’estensione zip è stata disattivata e non puó essere visualizzata.]

tutamimetica
Utente Senior
 
Post: 209
Iscritto il: 10/06/08 17:25

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi pietrol » 04/04/09 00:58

Ciao tutamimetica
scusa potresti postare di nuovo il tuo file
non riesco a scaricarlo.

grazie
pietrol
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi tutamimetica » 08/04/09 09:40

Pietrol posto di nuovo il file, speriamo che stavolta riesci a scaricarlo.
ciao tuta
Allegati

[L’estensione zip è stata disattivata e non puó essere visualizzata.]

tutamimetica
Utente Senior
 
Post: 209
Iscritto il: 10/06/08 17:25

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi Anthony47 » 09/04/09 01:21

Ciao pandistelle,
seguendo l' altro forum vedo che dopo tante elaborazioni il problema e' ancora irrisolto.
Vediamo se noi ti portiamo piu' lontano:
-vuoi calcolare quanti "minuti convenzionali" ci sono tra due date ?
-considerando lu-ve di 720 minuti e sab da 360 minuti (in un posto hai scritto 480 min, ma se le ore sono 6, dalle 8:00 alle 14:00, fa 360 minuti) ?
-escludendo tutti i giorni festivi infrasettimanali (le domeniche sono sempre escluse) ?

Se questo e' il problema, allora comincia a fare in una colonna libera, ad esempio Z, da riga 1 in giu', l' elenco delle festivita' (1 gen 2009, 6 gen 2009, 13 aprile 2009, 25 aprile 2009, 1 mag 2009, etc etc); metti la data completa (giorno, mese, anno) in un valido formato excel.
A questo punto, supponiamo che la data di inizio sia in B2 e quella di fine sia in B3:
-calcoli quanti giorni Lu-Ve ci sono, escludendo i festivi elencati, con la formula
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(--(GIORNO.SETTIMANA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;2)<6);--VAL.ERRORE(CONFRONTA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;Z:Z;0)))

-calcoli quanti sabati ci sono, sempre escludendo i festivi elencati, con la formula
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(--(GIORNO.SETTIMANA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;2)=6);--VAL.ERRORE(CONFRONTA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;Z:Z;0)))

-puoi ottenere direttamente i minuti con la formula (ottenuta unendo le due componenti di sopra)
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(--(GIORNO.SETTIMANA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;2)<6);--VAL.ERRORE(CONFRONTA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;Z:Z;0)))*720+MATR.SOMMA.PRODOTTO(--(GIORNO.SETTIMANA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;2)=6);--VAL.ERRORE(CONFRONTA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;Z:Z;0)))*360


E' questo che cercavi?
Ciao, fatti sentire.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi Anthony47 » 09/04/09 08:49

FORSE le date di inizio e fine comprendono anche una parte "oraria"; se e' cosi', allora nelle formule che ti ho dato tutti i riferimenti a B2 e B3 devono essere sostituiti da INT(B2) e INT(B3).
Quindi la formula finale diventa:
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(--(GIORNO.SETTIMANA(INT(B2)+RIF.RIGA(INDIRETTO("1:"&INT(B3)-INT(B2)+1))-1;2)<6);--VAL.ERRORE(CONFRONTA(INT(B2)+RIF.RIGA(INDIRETTO("1:"&INT(B3)-INT(B2)+1))-1;Z:Z;0)))*720+MATR.SOMMA.PRODOTTO(--(GIORNO.SETTIMANA(INT(B2)+RIF.RIGA(INDIRETTO("1:"&INT(B3)-INT(B2)+1))-1;2)=6);--VAL.ERRORE(CONFRONTA(INT(B2)+RIF.RIGA(INDIRETTO("1:"&INT(B3)-INT(B2)+1))-1;Z:Z;0)))*360

INOLTRE, se c' e' bisogno di conteggiare il tempo del giorno di inizio dall' orario segnato (e non per tutti i 720/360 minuti), e idem per la giornata di chiusura, si puo' fare (abbiamo fatto di "peggio", vedi viewtopic.php?f=26&t=77760); ma in questo caso ho bisogno di sapere se le date di apertura / chiusura sono sempre giorni lavorativi (cioe' mai, ad esempio, domenica) e se gli orari sono a loro volta all' interno dell' orario lavorativo (cioe' mai, ad esempio, 6:30 di mattina).

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi ricky53 » 11/04/09 22:52

Ciao Antony,

sono un moderatore dell'altro forum cui ti sei riferito con
...
seguendo l' altro forum vedo che dopo tante elaborazioni il problema e' ancora irrisolto.
Vediamo se noi ti portiamo piu' lontano:
...


Premetto che non ho ancora letto quanto hai proposto come soluzioni in questa discussione.

La tua frase mi ha fatto venire in mente di lanciarvi una sfida per vedere chi trova la soluzione più semplice e funzionale (in applicazione del principio di "efficacia / efficienza").

In un altro forum, tempo fa, ho gestito delle sfide didattiche: io ponevo il quesito sfidando i naviganti del forum a trovare la soluzione più semplice, più usabile e, ove possibile, più veloce dando anche i punteggi. E’ stato interessante però con l’andare del tempo diventava pesante per me seguire le varie risposte, trovare quesiti da proporre sempre più articolati ed ho dovuto chiudere. Un po’ mi è dispiaciuto.
Cosa ne pensi?

Per il momento tanti auguri a tutti voi.
Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi ricky53 » 12/04/09 00:43

Ciao per il momento riporto questa soluzione:

in "A1 e "B1" ci sono le due date
in "Z1:Z.." ci sono le festività, compreso il patrono
queste sono le funzioni utente utilizzate
Codice: Seleziona tutto
Function Sabati_Lavorativi(Data1, Data2)
    For I = Data1 To Data2
        If Weekday(I, vbMonday) = 6 Then
            Sabati = Sabati + 1
        End If
    Next I
    Sabati_Lavorativi = Sabati - Sabati_Festivi(Data1, Data2)
End Function

Function Sabati_Festivi(Data1, Data2)
    Riga = Range("Z65536").End(xlUp).Row
    For I = 1 To Riga
        If Weekday(Cells(I, 26), vbMonday) = 6 And Cells(I, 26) >= Data1 And Cells(I, 26) <= Data2 Then
            Sabati_Festivi = Sabati_Festivi + 1
        End If
    Next I
End Function


e questa è la soluzione da scrivere in una cella:

Codice: Seleziona tutto
=GIORNI.LAVORATIVI.TOT($A$1;$B$1;$Z$1:$ZF$..) + Sabati_Lavorativi(A1; B1)


dove "Z.." è l'ultima cella contenente le festività

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi ricky53 » 12/04/09 00:55

Ciao,
ed infine per il calcolo dei minuti puoi fare in questo modo:

Codice: Seleziona tutto
=GIORNI.LAVORATIVI.TOT($A$1;$B$1;$F$1:$F$12)*720 +  Sabati_Lavorativi(A1; B1)*360


Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi ricky53 » 12/04/09 00:58

Ciao,
Scusatemi ma correggo l'intervallo delle festività che è nella colonna "Z"

Codice: Seleziona tutto
=GIORNI.LAVORATIVI.TOT($A$1;$B$1;$Z$1:$Z$..)*720 +  Sabati_Lavorativi(A1; B1)*360


Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi Anthony47 » 13/04/09 02:20

Ciao Ricky e benvenuto nel forum.
Intanto grazie per il contributo offerto agli utenti del nostro forum e a pandistelle per la soluzione del suo problema (immagino che sia anche sul forum IALweb).
La mia proposta e' basata solo su formule, ed esclude i giorni definiti "festivi" nelle' elenco da compilare, sia che sia un Sabato (es 25 Apr 2009) sia che sia un altro giorno della settimana (es Ven 1 Mag 2009).
Sarebbe utile il conforto della prova di pandistelle sulle varie soluzioni propostele, come pure il chiarimento sull' eventuale calcolo da fare per il giorno di inizio e quello di fine, se i due valori comprendono un orario oltre che la data.

Per quanto riguarda l' idea della "disfida", mah... io sono tra quelli che pensano che l' ottimo sia nemico del bene; troverai poche discussioni in questo forum dove una risposta "decorosa" sia stata integrata da me con una risposta "migliore". Insomma l' idea mi lascia un po' perplesso.

Spero vorrai ancora darci di tanto in tanto il tuo contributo, compatibilmente con la tua disponibilita' di tempo; te ne saremmo grati, visto il livello di esperienza che dimostri.

Con simpatia!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi ricky53 » 14/04/09 18:21

Ciao Anthony,
grazie per il benvenuto.
Ho conosciuto da pochi giorni questo forum ed è mia intenzione frquentarlo e cercare di aiutare , se mi sarà possibile, chi pone quesiti.

Sono con te sul fatto che Pandistelle dovrebbe darci un riscontro su come sta operando, attendiamo ...

Per la sfida: peccato.
Comunque io sono per "ottimizzare" le soluzioni trovate sia in termini di istruzioni che di preestazioni.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi Anthony47 » 15/04/09 00:01

Mi accorgo di una complicazione clamorosa nella mia soluzione...
Avevo scritto:
-calcoli quanti giorni Lu-Ve ci sono, escludendo i festivi elencati, con la formula
Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(--(GIORNO.SETTIMANA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;2)<6);--VAL.ERRORE(CONFRONTA(B2+RIF.RIGA(INDIRETTO("1:"&B3-B2+1))-1;Z:Z;0)))

(poi la formula si era appesantita ulteriormente per l' uso prudnziale di INT(B2) e INT(B3) al posto di B2 e B3)
Ebbene, pur essendo questa formula intrinsecamente semplicissima (due matrici in una Matr.Somma.Prodotto), essa e' una inutile complicazione rispetto a quanto excel gia' fa con GIORNI.LAVORATIVI.TOT; volendo essere benevolo con me stesso dico che mi ha abbagliato il fatto che quella stessa struttura di formula era necessaria per il calcolo dei sabati lavorativi.

Fornisco quindi "la penultima" versione della mia soluzione:
Codice: Seleziona tutto
=GIORNI.LAVORATIVI.TOT(B2;B3;$Z:$Z)*720+MATR.SOMMA.PRODOTTO(--(GIORNO.SETTIMANA(INT(B2)+RIF.RIGA(INDIRETTO("1:"&INT(B3)-INT(B2)+1))-1;2)=6);--VAL.ERRORE(CONFRONTA(INT(B2)+RIF.RIGA(INDIRETTO("1:"&INT(B3)-INT(B2)+1))-1;Z:Z;0)))*360
L' uso di INT(B2) e INT(B3) e' precauzionale nell' ipotesi che le date abbiano anche una componente oraria.
Il tutto, senza pandistelle, rischia pero' di essere una inutile precisazione.

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi ricky53 » 15/04/09 00:18

Ciao Anthony,
tanto perchè ritengo utile ottimizzare e se posso permettermi:
nella tua soluzione l'utilizzo di "$Z:$Z" e "Z:Z" per le festività è "abbondante" le festività sono 12 (se non erro, festa del patrono compresa) quindi selezionare in una formula matriciale per due volte tutta la colonna "Z" ne rallenta l'esecuzione. Condividi?

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi Anthony47 » 15/04/09 10:13

E secondo te perche' avevo scritto "penultima versione"?? :lol: :lol:
Comunque la tua obiezione e' giusta perche':
-su Giorni.Lavorativi.Tot non e' possibile (cioe' e' vietato) usare un range indefinito, infatti la formula con Z:Z restituisce errore.
-sul calcolo relativo ai sabati, su un periodo di 30 gg, l' uso di Z:Z porta a un tempo di esecuzione della formula di (a spanne) 100msec, che scendono a 1msec usando Z1:Z1000 e 0,4 msec usando Z1:Z100. Indubbiamente il risparmio c' e'.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi ricky53 » 15/04/09 11:28

Ciao,
grazie per la risposta tempestiva.

Che precisione per il calcolo del tempo di elaborazione!!! (Scherzo)
Per il calcolo delle frazioni di millisecondi cosa hai utilizzato? Oppure … tua facezia per me …
Nel caso ci sei riuscito bene.

Tornando a noi: non mi sono espresso bene.
Intendevo dire che:
1. ho altre funzioni (con cicli for/next) nei vari fogli di un file XLS
2. utilizzando il Range "Z:Z" del tuo esempio
3. quando eseguo una "sub" che scrive dati in varie celle in un ciclo for/next

il rallentamento è visibile, tramite la clessidra che gira, diversi secondi e non ms.

Ho fatto la prova con un file che ho prodotto in seguito al quesito di Pandistelle: ho inserito varie funzioni (che fanno dei cicli for/next) ho aggiunto la tua formula matriciale con "Z:Z" ed il rallentamento, eseguendo la "sub" che scrive i dati in varie celle, è stato evidente, con il calcolo "Manuale" ovviamente il rallentamento sparisce.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi Anthony47 » 15/04/09 15:13

Per il benchmark ho usato una macro per calcolare il tempo di esecuzione di un tot di ricalcoli; del tipo
Codice: Seleziona tutto
Sub Macro1()
[A1] = Timer
'Application.ScreenUpdating = False
Range("b2").Select
For I = 1 To 1000
    ActiveCell.FormulaR1C1 = "1/15/2009"
Next I
[A2] = Timer
Application.ScreenUpdating = True
End Sub

Si variano gli indirizzi nell' istruzione sotto test e si calcola l' effetto.
Ripetendo 100 volte un calcolo che singolo dura 100 msec la durata e' 10 sec, chiaramente visibile; ma in excel vengono calcolate solo le formule su cui e' variato un ascendente, quindi l' effetto e' non misurabile.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi raimea » 01/04/11 21:11

uso questo post mi sembra "vicino" alla mia richiesta... 8)
in alcune mie macro piuttosto lunghe metto questa istruzione:
Codice: Seleziona tutto
 Inizio = Timer
Macro…

Fine = Timer
MsgBox "Elaborazione Terminata. Secondi impegati per l'elaborazione:  " & Round(Fine - Inizio, 3)


essa mi restituisci in msbox i secondi che e' durata l'esecuzione della macro Es. 121 cioe 121 secondi.
come sarebbe possibile avere lo stesso risultato ma espresso in minuti e secondi
cioe' se la macro e' durata 121 sec mi restitisca 2 min 1 sec. in mesg box :?:
vi ringrazio.
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: calcolare il tempo esprimendolo minuti tra due date

Postdi Anthony47 » 01/04/11 22:24

Ad esempio
Codice: Seleziona tutto
MsgBox ("Tempo impiegato " & Int((Fine - Inizio) / 60) & " min " & (Fine - Inizio) Mod 60 & " Sec")


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "calcolare il tempo esprimendolo minuti tra due date":


Chi c’è in linea

Visitano il forum: Nessuno e 47 ospiti