Condividi:        

Funzione per calcolo ore straordinario

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: Funzione per calcolo ore straordinario

Postdi Rosario77 » 06/03/08 14:26

Un caloroso saluto a tutti gli amici del forum.
Dopo un bel pò di tempo torno a chiedere ulteriori delucidazioni sulla macro xstra.
A causa di "abbellimenti in corso", vorrei cambiare la disposizione degli inserimenti delle ore entrata/uscita, ma la macro xstra “..richiede 4 celle in orizzontale contigue con le timbrature E/U mattina, E/U pomeriggio..“.
E’ possibile cambiare la disposizione delle timbrature, da orizzontale, es. d4- e4 – f4 – g4, a verticale d4, d5, d6, d7. Se sì, cosa è necessario modificare nella macro?, presumo che dette modifiche dovrebbero essere apportate nelle seguenti righe della funzione:
. . .
In1 = InOuTable
Out1 = InOuTable.Offset(0, 1).Value + (InOuTable.Offset(0, 1) < In1) * -1
InOuTable.Offset(0, 1)) * -1
In2 = InOuTable.Offset(0, 2).Value + (InOuTable.Offset(0, 2) < Out1) * -1
Out2 = InOuTable.Offset(0, 3).Value + (InOuTable.Offset(0, 3).Value < In2) * -1
. . .
Il problema è che non sò da dove cominciare!
E se volessi aggiungere altre due timbrature, sempre in verticale, se è possibile cosa si deve cambiare?
Rosario77
Rosario77
Utente Junior
 
Post: 23
Iscritto il: 16/12/07 10:56

Sponsor
 

Re: Funzione per calcolo ore straordinario

Postdi Anthony47 » 07/03/08 00:28

Per le timbrature in verticale puoi provare a invertire, nelle celle che lavorano su InOuTable, l' offset di riga con l' offset di colonna.
Per l' aggiunta di altre timbrature la cosa mi sembra meno immediata, perche' oltre ai ricalcoli che hai identificato e all' aggiunta di ulteriori In3 e Out3 vanno riviste tutte le istruzioni dopo CalcTy: che poi sono il cuore del calcolo; sinceramente preferirei sorvolare...

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

Re: Funzione per calcolo ore straordinario

Postdi Anthony47 » 07/04/09 01:20

Vi segnalo che a seguito di prove fatte in altra discussione (vedi qui: viewtopic.php?f=26&t=78394) ho modificato il codice che postai qualche tempo fa (vedere viewtopic.php?f=26&t=69705#p402581) come segue:
Codice: Seleziona tutto
    Xstra = Xstra - TabTy0
    If Xstra <= 0.00001 Then      '<<< MODIFICATA
    TabTy(CT) = TabTy(CT) + Xstra
E' modificata solo quella marcata (prima era If Xstra <= 0 Then), le altre due sono mostrate solo per identificare la posizione.

Inoltre e' disponibile una versione di codice per la gestione di 6 timbrature giornaliere; non la pubblico per non incasinare vieppiu' questa discussione, ma se qualcuno e' interessato si faccia sentire.

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

Re: Funzione per calcolo ore straordinario

Postdi francesco971 » 15/07/10 22:17

Ciao a tutti, mi sono appena registrato al forum che trovo molto interessante!!!
In proposito volevo far presente che ho seguito tutti i consigli per far funzionare al meglio la funzione "xstra" ma ho un
problema con il " festivo infrasettimanale": infatti per un turno che inizia alle 2400 del suddetto giorno e finisce alle 0600 del giorno successivo feriale, dovrebbe calcolarmi 06 ore di notturno festivo invece me li calcola semplicemente come notturno;
ps: nel foglio Deforari,alla definizione 9 (festinfr) ho fatto così:
0000 0600 1400 2200 2400 3600 4600 4800
4 4 3 3 4 4 1 2

ringrazio anticipatamente!!!
francesco971
Newbie
 
Post: 7
Iscritto il: 15/07/10 21:50

Re: Funzione per calcolo ore straordinario

Postdi Anthony47 » 16/07/10 00:01

Ciao francesco971 e benvenuto nel forum.

Una domanda e una osservazione:
-per il giorno FestivoInfrasettimanale, in defOrari (quindi la riga "9") quante ore di lavoro standard hai impostato?
-se scrivi "ore 24:00" della domenica, questa e' in realta' l' ora 0:00 di lunedi'; se vuoi invece intendere l' ora 0:00 di domenica scriverai invece "0:00"

Se questi spunti non ti danno nessun magico aiuto allora posta ancora dando anche degli esempi di timbratura per giorni FestiviInfrasettimanali, la relativa riga di DefOrari, che risultati hai e che risultati ti attendevi.

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

Re: Funzione per calcolo ore straordinario

Postdi francesco971 » 16/07/10 13:43

Intanto grazie per l'interessamento;
ho impostato 00.00 come orario standard per tutti i giorni;
così mi calcola e mi suddivide le ore fatte secondo le fasce orarie.
però come dicevo prima un turno che inizia alle 2200 del festivo infrasettimanale e finisce alle 0600 del giorno successivo feriale mi calcola 0200 ore di festivo notturno e 0600 ore di notturno semplice, invece dovrebbe calcolarmi: 0200 festivo notturno e altre 0600 ore sempre come festivo notturno;
ho ricontrollato la tabella deforari, tenendo conto dei tuoi suggerimenti,e mi sembra che le impostazioni siano esatte!
francesco971
Newbie
 
Post: 7
Iscritto il: 15/07/10 21:50

Re: Funzione per calcolo ore straordinario

Postdi Anthony47 » 17/07/10 00:21

Ma il "notturno festivo" si contabilizza durante la notte che appartiene al giorno festivoinfrasett o alla notte del giorno successivo?
Ad esempio, se mercoledi' e' festivo, allora sono "notturne+festive" le ore che lavori dal martedi alle 22 al mercoledi' alle 8, o quelle che lavori da mercoledi' alle 22 a giovedi' alle 8?
A parte questo dubbio, mi dici quali sono le colonne usate, dalla colonna Data all' ultima timbratura? Potrebbe andare bene uno screenshot che mostri intestazione di colonne; trovi le istruzioni qui: viewtopic.php?f=26&t=80395#p466013

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

Re: Funzione per calcolo ore straordinario

Postdi francesco971 » 18/07/10 08:27

Ciao, per quanto riguarda il dubbio delle ore il contratto prevede: (esempio) se il festivo è mercoledì il notturno festivo decorre dalle 2200 del martedì alle 0600 del mercoledì e poi dalle 2200 del mercoledì alle 0600 del giovedì.
Il foglio da me impostato è pressochè così: colonna A "data" , colonna B "festivi", colonna C "inizio turno", colonna D "fine turno", colonna E "inizio turno(bis), colonna F "fine turno(bis)".
Provo a fare uno screenshot : il link è questo, http://yfrog.com/ngimmaginesj
Immagine
il collegamento diretto : http://img844.imageshack.us/img844/5262/immagines.jpg
spero di esserci riuscito, non sono molto pratico!
francesco971
Newbie
 
Post: 7
Iscritto il: 15/07/10 21:50

Re: Funzione per calcolo ore straordinario

Postdi Anthony47 » 19/07/10 01:13

Non credo che sia uno standard il "notturno-festivo che si calcoli su due notti diverse, pertanto non modificherei la macro ma il modo in cui essa viene usata.
In particolare, devi indicare come "festivo infrasettimanale" anche il giorno dopo quello effettivamente festivo; per questo in A4 userai e poi copierai verso il basso:
Codice: Seleziona tutto
=SE(E(VAL.ERRORE(CERCA.VERT(A4;festivi;1;0));VAL.ERRORE(CERCA.VERT(A3;festivi;1;0)));0;1)

In questo modo avrai marcato come festivo sia 1 genn che 2 genn (come pure sia il 6 genn che il 7 genn).
[questo nell' ipotesi che, come suggerito in uno dei messaggi precedenti, in A4 al momento stai usando =SE(VAL.ERRORE(CERCA.VERT(A4;festivi;1;0))]

Noto un potenziale problema nella tua DefOrari, perche' gli step orari usati fino alle 24 sono diversi da quelli usati dalle 24 alle 48.
Infatti, con queste definizioni stai dichiarando tipo-4 il periodo 24-36 (12 del giorno dopo):
Codice: Seleziona tutto
0   600   1400   2200   2400   3600   4600   4800
4   4   3   3   4   4   1   2


Sarebbe meglio usare questa tabella, che nel secondo gg prevede le stesse fasce orarie del primo:
Codice: Seleziona tutto
0   600   1400   2200   2400   3000   3800   4600   4800
4   4   3   3   4   4   x   x   x


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

Re: Funzione per calcolo ore straordinario

Postdi francesco971 » 19/07/10 22:25

Ciao Anthony47, per quanto riguarda gli step avevo fatto un errore di copiatura in realtà sono così:
http://img837.imageshack.us/img837/8907/deforari.jpg;
La tua formula per definire festivo anche il giorno successivo, risolve il problema del notturno/festivo però
le 2 ore dalle 0600 alle 0800 che prima mi calcolava giusto come diurno feriale adesso me li da come festivo.
In poche parole il festivo/infrasettimanale calcolato su due notti diverse è proprio uno standard del contratto:
ed ho lo stesso problema anche con la domenica;
infatti il notturno fra domenica e lunedì va bene lo da come notturno festivo, quello fra le 2200 del sabato e le 0000 della domenica invece lo da come notturno semplice ma dovrebbe essere notturno festivo.
Questo forse dipende da qualche valore impostato male nel foglio DefOrari che ti ho allegato tramite screenshot.
Ho fatto diversi cambiamenti ma va a finire che mi imbroglio ancora di più!!!!!
Ciao
francesco
francesco971
Newbie
 
Post: 7
Iscritto il: 15/07/10 21:50

Re: Funzione per calcolo ore straordinario

Postdi francesco971 » 19/07/10 22:58

IL sabato l'ho risolto bastava impostare 4(festivo/notturno) nello step 2400 del giorno 6 (sabato).
Ciao.
francesco971
Newbie
 
Post: 7
Iscritto il: 15/07/10 21:50

Re: Funzione per calcolo ore straordinario

Postdi francesco971 » 20/07/10 20:08

Se guardi la domenica, funziona benissimo: mi da notturno festivo sia le ore effettuate dalle 2200 del sabato fino alle ore 0600 della domenica, sia le ore effettuate dalle ore 2200 della domenica sino alle 0600 del lunedì.
ti allego screeshot:
http://img37.imageshack.us/img37/5196/tabellab.jpg
francesco971
Newbie
 
Post: 7
Iscritto il: 15/07/10 21:50

Re: Funzione per calcolo ore straordinario

Postdi Anthony47 » 20/07/10 22:08

Il "lunedì" e' un giorno specifico, e nell' orario 0-6 nella deforari hai segnato 4 quindi ti restituira' 4 per quella fascia oraria perche' cosi' l' hai impostata.
Il giorno dopo un festivo infrasettimanale non sai che giorno e', quindi non puoi mettere 4 nella stessa posizione...

Sempre con formule "post macro" potresti, nella colonna che estrae il lavoro "notturno & festivo" (K), mettere una formula del tipo
Codice: Seleziona tutto
=Se(Formula_XSTRA=2;Se($B3=1;4;Formula_XSTRA);Formula_XSTRA)

E' un esempio che ipotizza che il notturno sia codificato 2 e il notturno-festivi sia 4 (come mi sembra sia nella tuua tabella) e che la formula sia su riga 4, in modo che con $B3=1 si controlli se il giorno precedente e' festivo.
Poi copi la formula verso il basso.

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

Re: Funzione per calcolo ore straordinario

Postdi francesco971 » 21/07/10 14:53

grazie per il suggerimento, così com'era non funzionava: l'ho adattata un pò!
Ora sembra funzionare tutto.
Ciao, grazie ancora.
Francesco
francesco971
Newbie
 
Post: 7
Iscritto il: 15/07/10 21:50

Re: Funzione per calcolo ore straordinario

Postdi ivo » 29/03/11 11:24

@Anthony47
qui
ho messo il link ad un mio file excel
adesso vedo la tua bellissima funzione...
come già scritto nell'altro topic, mi interesserebbe condividere idee, conoscenze, e soluzioni, per rendere il lavoro che ho fatto, il più completo possibile.

Forse il link sarebbe stato meglio metterlo qua...

P.D.
spero di non aver fatto cross posting... :oops:
Immagine
Avatar utente
ivo
Utente Senior
 
Post: 1135
Iscritto il: 20/08/01 01:00
Località: Treviso

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Funzione per calcolo ore straordinario":


Chi c’è in linea

Visitano il forum: raimea e 5 ospiti

cron