Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel - Data/Ora di completamento attivita'

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

Re: Excel - Data/Ora di completamento attivita'

Postdi albertorota » 16/07/13 12:28

Ciao Anthony,
Sono nuovo nel forum, ma ho piú o meno la stessa esigenza di civas, solo molto piú semplice (credo....)
Devo programmare la produzione dove le macchine girano a 3 turni da 8 ore.
Quello che mi serve, é mettere in fila i lavori, con lo ore di cui necessitano, e vedere dove si arriva durante la settimana.
Sui tre turni non c'é alcun problema, in quanto metto una semplice regola che mi somma le ore alla data di partenza, e mi ricavo la data di fine attivitá.
Tutto invece si complica, quando ho a disposizione solo i due turni giornalieri.
Insomma, ho la necessitá di avere una formula, che mi fa saltare le otto ore di notte, e riprende a conteggiare alle 6 del mattino successivo.

Spero di aver chiarito il mio quesito!!

Grazie per ogni aiuto che mi arriverá. IO SONO UNA FRANAAAAAA
albertorota
Newbie
 
Post: 5
Iscritto il: 16/07/13 12:22

Sponsor
 

Re: Excel - Data/Ora di completamento attivita'

Postdi Anthony47 » 16/07/13 14:36

Ciao albertorota, benvenuto nel forum.
Anche se sei una frana dovrai usare la "funzione Termine", il cui codice e' presentato pochi messaggi prima di questo: viewtopic.php?f=26&t=98657#p568004
Come usare quel codice e' descritto sempre in questa stessa descrizione (vedi viewtopic.php?f=26&t=98657#p567534)
Ti bastera' quindi creare una tabella con gli orari di lavoro giornalieri (4 celle in verticale, es L2:L5), un' altra con l' elenco delle festivita' (anche vuota, es M2:M20) e poi usare la formula tipo
qualche post fa Anthony ha scritto:
Codice: Seleziona tutto
=Termine(OreDiDurata;DataOraAvvio;PrimaCellaOrarioLavorativo;SabatoSi/SabatoNo;AreaFestivi)

SabatoSi/SabatoNo corrisponde ai valori 1/0.
Quindi se la data/ora di inizio fosse in A2, le ore di durata in B2, e vuoi considerare il sabato lavorato (solo primo gruppo di timbrature) la formula sarebbe

Codice: Seleziona tutto
    =Termine(B2;A2;L2;1;M2:M20)

La cella va formattata come Data & Ora


Se hai difficolta' a eseguire quanto scritto posta ancora spiegando cosa hai fatto e dove ti sei invece arenato; comunque fai sapere.
Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - Data/Ora di completamento attivita'

Postdi albertorota » 16/07/13 16:46

Anthony47 ha scritto:Ciao albertorota, benvenuto nel forum.
Anche se sei una frana dovrai usare la "funzione Termine", il cui codice e' presentato pochi messaggi prima di questo: viewtopic.php?f=26&t=98657#p568004
Come usare quel codice e' descritto sempre in questa stessa descrizione (vedi viewtopic.php?f=26&t=98657#p567534)
Ti bastera' quindi creare una tabella con gli orari di lavoro giornalieri (4 celle in verticale, es L2:L5), un' altra con l' elenco delle festivita' (anche vuota, es M2:M20) e poi usare la formula tipo
qualche post fa Anthony ha scritto:
Codice: Seleziona tutto
=Termine(OreDiDurata;DataOraAvvio;PrimaCellaOrarioLavorativo;SabatoSi/SabatoNo;AreaFestivi)

SabatoSi/SabatoNo corrisponde ai valori 1/0.
Quindi se la data/ora di inizio fosse in A2, le ore di durata in B2, e vuoi considerare il sabato lavorato (solo primo gruppo di timbrature) la formula sarebbe

Codice: Seleziona tutto
    =Termine(B2;A2;L2;1;M2:M20)

La cella va formattata come Data & Ora


Se hai difficolta' a eseguire quanto scritto posta ancora spiegando cosa hai fatto e dove ti sei invece arenato; comunque fai sapere.
Ciao.


oleeeeeeeeeeeeeeee :lol: :lol: :lol: :lol: :lol: :lol: :lol:
posso solo dire che sei stato di grande aiuto. Funziona alla grande e l'ho fatto in 2 minuti!!!!
ora ci gioco un poco e metto apposto il tutto.
devo solo trovare un modo, per dire al progamma in automatico quanto segue

se vedi nella cella il numero 2 (che metterò manualemnte ad inizio settimana) calcola due turni
altrimenti se vedi nella cella il numero 3, calcola 3 turni, e quindi non saltare le otto ore di notte.

grazie ancora
grazie grazie

Alberto
albertorota
Newbie
 
Post: 5
Iscritto il: 16/07/13 12:22

Re: Excel - Data/Ora di completamento attivita'

Postdi Anthony47 » 16/07/13 23:30

Usa una formula del tipo
Codice: Seleziona tutto
=Se(QuellaCella=2;LaFormulaCheUsaTERMINE;LaFormulaStandard)


Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - Data/Ora di completamento attivita'

Postdi albertorota » 17/07/13 07:29

Anthony47 ha scritto:Usa una formula del tipo
Codice: Seleziona tutto
=Se(QuellaCella=2;LaFormulaCheUsaTERMINE;LaFormulaStandard)


Ciao



beh, che dire, sono proprio una frana.,...... e un poco mi vergogno :oops: :oops: :oops:
funziona alla perfezione!
posso ringraziarti???!?!?

albe
albertorota
Newbie
 
Post: 5
Iscritto il: 16/07/13 12:22

Re: Excel - Data/Ora di completamento attivita'

Postdi albertorota » 17/07/13 07:38

albertorota ha scritto:
Anthony47 ha scritto:Usa una formula del tipo
Codice: Seleziona tutto
=Se(QuellaCella=2;LaFormulaCheUsaTERMINE;LaFormulaStandard)


Ciao



beh, che dire, sono proprio una frana.,...... e un poco mi vergogno :oops: :oops: :oops:
funziona alla perfezione!
posso ringraziarti???!?!?

albe



a questo punto, però me ne approfitto, anche se ci dovrei arrivare da solo, ma essendo un "caprone....."
funziona tutto per i due turni e per i tre turni
ma nel caso una macchina girasse ad un turno solo, come faccio a farlo saltare dalle ore 14:00 del pomeriggio alle ore 06:00 del mattino successivo?

grazie ancora
alberto
albertorota
Newbie
 
Post: 5
Iscritto il: 16/07/13 12:22

Re: Excel - Data/Ora di completamento attivita'

Postdi Anthony47 » 18/07/13 03:14

Codice: Seleziona tutto
=Se(LaCella=3;LaTuaFormulaStandard;se(LaCella=2;PrimaFormulaTERMINE;SecondaFormulaTERMINE))

La "SecondaFormulaTERMINE" sara' come la prima, ma usera' una tabella di orari con un solo turno giornaliero.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - Data/Ora di completamento attivita'

Postdi albertorota » 18/07/13 10:28

Anthony47 ha scritto:
Codice: Seleziona tutto
=Se(LaCella=3;LaTuaFormulaStandard;se(LaCella=2;PrimaFormulaTERMINE;SecondaFormulaTERMINE))

La "SecondaFormulaTERMINE" sara' come la prima, ma usera' una tabella di orari con un solo turno giornaliero.

Ciao



Perfetto!!!!!
:lol: :lol:
albertorota
Newbie
 
Post: 5
Iscritto il: 16/07/13 12:22

Re: Excel - Data/Ora di completamento attivita'

Postdi Anthony47 » 23/12/13 01:34

Partendo da richiesta formulata in altra discussione (vedi viewtopic.php?f=26&t=100803&p=582374#p582274) ho modificato totalmente la funzione Termine con nuove prestazioni:
-possibilita' di dichiarare orari di lavoro fino a 10 periodi Entr/Usc al giorno
-possibilita' di dichiarare orari di lavoro per ogni giorno della settimana
-possibilita' di dichiarare un elenco di festivita' e l' orario di lavoro per le festivita'
La nuova funzione si chiama termineXA e corrisponde al seguente codice:
Codice: Seleziona tutto
Function TermineXA(ByVal Durata As Double, ByVal Via As Double, ByRef TT As Range, _
         Optional ByRef Holid As Range, Optional ByRef AllTable As Range) As Variant
'V 3.0 B31221  by Anthony
'Data una "durata" in [hh]:mm:ss, una data/ora di inizio, e un orario di lavoro,
'   calcola la data/ora di conclusione (di una attivita')
'L' orario e' definito separatamente per i giorni settimanali: 1=Lun, 2= Mart,... 7=Dom
'  la tabella orari e' organizzata come segue
'     1     6     7     10    '1="dal Lunedì in avanti"; 6="dal Sab in avanti"; ... 10=Festivi
'    Entr  Entr  Entr  Entr
'    Usc   Usc   Usc   Usc
'    Entr  Entr  Entr  Entr
'    Usc   Usc   Usc   Usc
'    ...   ...   ...   ...
'MAX 10 blocchi Entr/Usc; se blocco vuoto=non si lavora
'
'Esempio di Uso:
'   =TermineXA(OreDurataTask;DataOraDiInizio;IntestazioneTabellaOrari;RangeFestivita'[;Opzionale:TabellaOrari])
'   Ore e Date vanno indicate come Ore e Date nel formato Excel
'
Dim CDay As Long, mWTT, CDTT As Range, I As Long, MinMatch, RowSt As Long, MinTask As Long, MinScr As Long
Dim EndMin As Double, J As Long, CDTRec As Long, CDStart As Double
'
Const MaDay As Long = 24 * 60
MinTask = Durata * MaDay
If MinTask > (500 * 60) Then TermineXA = CVErr(xlErrNA): Exit Function
'
'Gestisci Holid opzionale:
If Holid Is Nothing Then
    Set Holid = TT
End If
'
For J = 1 To 200
    CDay = Application.WorksheetFunction.Weekday(Via, 2)
    If Application.WorksheetFunction.CountIf(Holid, Int(Via)) > 0 Then CDay = 10  'caso festivo
    mWTT = Application.Match(CDay, TT, True)
    Set CDTT = Range(TT.Cells(1, mWTT).Offset(1, 0), TT.Cells(1, mWTT).End(xlDown))  'current day timetable
    If CDTT.Rows.Count <= 20 Then
        CDTRec = Application.WorksheetFunction.CountA(CDTT)
        CDStart = (CDTT.Cells(1, 1).Value * MaDay)
        For I = (Via - Int(Via)) * MaDay To MaDay
            If I >= CDStart Then
                MinMatch = Application.Match(I / MaDay, CDTT, True)
                If MinMatch Mod 2 = 1 Then
                    MinScr = MinScr + 1
                   Else
                    If MinMatch >= CDTRec Then Exit For
                End If
                If MinScr >= MinTask Then
                    EndMin = (I + 1) / MaDay
                    GoTo EndF
                End If
            End If
        Next I
    End If
    Via = Int(Via) + 1
Next J
'
EndF:
TermineXA = Int(Via) + EndMin
'max circa 200 gg
If J >= 200 Then
    TermineXA = CVErr(xlErrNA)
End If
End Function
La funzione va richiamata con una formula del tipo
Codice: Seleziona tutto
=TermineXA(OreDurataTask;DataOraDiInizio;IntestazioneTabellaOrari[;RangeFestivita'[;Opzionale:TabellaOrari]])

Ad esempio
Codice: Seleziona tutto
=TermineXA(B2;A2;E1:H1;K1:K12;E2:H9)
(in B3 nell' immagine):
Immagine

Uploaded with ImageShack.us
La formula e' inserita in B3; in B6:B12 e' riportato lo split di come le 24h30min sono posizionate nelle varie date tra inizio e termine.
La tabella che definisce gli orari di lavoro corrisponde all' area in giallo, quindi la "testata" (che va nella formula) corrisponde a E1:H1; la tabella delle festivita' e' in K1:K12 (costruitela in modo che dentro ci stiano tutte le festivita' che possono corrispondere al perido fino alle scadenze elaborate).
Tuttavia la tabella delle festivita' puo' essere omessa nella formula, e in questo caso tutti i gg saranno conteggiati secondo la tabella degli orari giornalieri.
Opzionale e' anche il riferimento, nella formula, all' intera tabella degli orari (E2:H9, nell' esempio di prima); questo serve solo a ricalcolare automaticamente il risultato se si modifica la tabella degli orari di lavoro.

Due parole sull' intestazione tabella:
-l' intestazione deve contenere il numero giorno della settimana (1=lun, 2=mar, ... 7=Dom) piu' una colonna intestata "10" per le festivita' infrasettimanali. L' orario impostato in una colonna "10" e' prevalente rispetto all' orario del giorno settimanale; quindi per assurdo se la domenica non si lavora ma nelle festivita' infrasettimanali si lavora, allora una festivita' dichiarata che capitasse di domenica verrebbe dichiarata lavorativa. Tenetene conto quando compilate l' elenco delle festivita'...
-non e' obbligatorio dichiarare tutti i giorni, perche' il giorno "dopo" (se non e' dichiarato) eredita l' orario del giorno "prima". Nella tabella dell' immagine pubblicata significa che dal Lun al Ven si fa sempre lo stesso orario, il Sab un altro orario, la Dom un altro ancora. La colonna "10" e' meglio che sia inserita sempre, anche se non usate una tabella festivita'.
-una colonna vuota corrisponde a una giornata non lavorativa
-gli orari vanno dichiarati a coppie di Entrata /Uscita; quando costruite la tabella suggerisco di inserire le intestazioni di riga (come ho fatto io in D2:D9)
-e' meglio se le colonne che contengono la tabella degli orari siano vuote sotto la tabella.
Superfluo dire che Ore e Date vanno indicate come Ore e Date nel formato Excel? Evitate di inserire Ore e Date come stringhe tra virgolette: "spesso" vengono tradotte bene, ma talvolta vengono tradotte a caso; quindi alla peggio appoggiatevi ad una cella formattata correttamente; oppure, per le ore, ricordatevi che dividendo un valore di ore in decimale (es 12,5 pari a 12h30min) per 24 (nell' esempio: 12,5/24) otterrete il corrispondente valore che in formato excel corrisponde a 12h30min (nell' esempio: 0,520833333).

L' algoritmo e' molto elementare, quindi il tempo di calcolo potrebbe risultare di parecchi secondi; per evitare rallentamenti sgraditi ho pertanto posto un limite di max 500 h di durata e 100 giorni di scadenza; oltre questi valori sara' restituito l' errore #N/A, che corrisponde a un tempo di calcolo inferiore a 1-2 sec.

Fatene buon uso.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Excel - Data/Ora di completamento attivita'":


Chi c’è in linea

Visitano il forum: Anthony47 e 6 ospiti