Mi associo a Ricky nella richiesta di essere precisi e di collaborare (nel vostro interesse); con qualche ulteriore considerazione...
Parli di "ferie", ma non mi risulta che le ferie si fruiscano ad ore; immagino quindi che la richiesta e' di calcolare le ore di assenza (rispetto ad un numero di ore standard che devi ancora chiarire a quanto ammonta), poi voi le gestite secondo le vostre consuetudini, magari accorpando ferie e rol in una unica gestione.
Dovresti anche chiarire
-cosa fare con eventuali ore lavorate in eccesso.
-come identificare le righe lavorative su cui calcolare il dato; perche' e' chiaro che se le ore lavorate fossero 4 e lo standard fosse 6 allora va calcolata una assenza di 2 ore, ma se un giorno non c' e' presenza allora lo dobbiamo considerare sempre riposo settimanale o e' una assenza di 6 ore? Questa informazione e' fondamentale per il calcolo, che quindi in questo momento e' impossibile da
-hai fatto una gestione decimale delle ore di ingresso /uscita; come gestirai l' eventuale mezz'ora? Cioe' l' Entrata alle "cinque e mezza" come la scriverai? In numero decimale (quindi 17.50) o in formato orario (quindi 17:30)?
Do' per scontato che il formato del tuo foglio sia flessibile, quindi si puo' assumere che in testa a Gennaio ci sara' il monte ferie (espresso in numero di ore) in dotazione a ogni dipendente, in coda alle presenze del mese si calcolano le ore di assenza (soggette ai chiarimenti chiesti prima) e quindi il saldo ferie del mese, che diventa il monte ferie del mese successivo.
Comunque, volendo evitare di looppare a vuoto, in linea di massima nel file che hai pubblicato potresti calcolare in D36 le assenze di Agostino con la formula
- Codice: Seleziona tutto
=MATR.SOMMA.PRODOTTO(--(C3:C33<>"");--(D3:D33<>"");--(E3:E33<6);6-E3:E33)
Questa presuppone che le colonne C e D siano sempre compilate, nei giorni in cui bisogna calcolare l' eventuale assenza (ad esempio scrivendo 0 /0 nei giorni di assenza totale); che l' orario standard e' di 6 ore; che le eventuali ore in eccesso vanno ignorate; che tutte le celle siano in formato di numero decimale.
Se il numero di ore di ferie iniziale e' scritto in C43 (per favore togli quelle celle unite, metti l' etichetta "Ore ferie" in B43 e scrivi 52 -se sono 52 le ore iniziali- in C43), allora calcolerai il saldo in C45 con la formula
- Codice: Seleziona tutto
=C43-D36
Veniamo al "mese successivo"...
Assumiamo che Ottobre sara' sul foglio posizionato alla destra di Settembre.
Metti questa "funzione" in un modulo standard del vba:
- Codice: Seleziona tutto
Function myPrec(ByRef myAdr As Range) As Variant
'
Application.Volatile
With Application.Caller.Parent
myPrec = .Parent.Sheets(.Index - 1).Range(myAdr.Address)
End With
End Function
Da Excel, Alt-F11 per aprire l' editor delle macro; Menu /Inserisci /Modulo; copia il codice e incollalo nel frame di destra.
Poi crea una copia del foglio Settembre: Tasto dx sul tab col nome foglio, scegli Sposta o copia; spunta Crea una copia, scegli la posizione subito a destra del foglio Settembre, premi Ok; assegna a questo nuovo foglio il nome Ottobre (o altro a piacere) e assicurati che sia esattamente a destra di Settembre.
Metti in A1 (ora c' e' ancora scritto Settembre 2014) la formula
- Codice: Seleziona tutto
=DATA.MESE(myPrec(A1);1)
Avrai cosi' la data di Ottobre
Metti in C43 la formula
- Codice: Seleziona tutto
=myPrec(C45)
e avrai il saldo iniziale di ore ferie, come calcolato in C45 di Settembre.
Ripeti la copia del foglio Ottobre per creare i fogli Novembre e Dicembre, che saranno gia' pronti senza bisogno di ulteriori modifiche (salvo il nome del foglio)
Ovviamente se il primo foglio si chiamava Gennaio (e conteneva le date di Gennaio) il processo per creare il file con 12 fogli e' lo stesso (copia di Gennaio; nuove formule che usano myPrec su Febbraio; copia di Febbraio per creare i mesi Marzo-Dicembre).
Per chiarezza: il mese e' determinato dalla posizione del foglio, non dal suo nome; quindi (ad esempio) se il foglio chiamato Maggio viene spostato accanto al foglio Gennaio esso conterra' le date di Febbraio. D' altra parte non e' necessario che Gennaio sia in prima posizione (purche' Febbraio e a seguire siano alla sua destra), perche' la sua data in A1 e' scritta e non calcolata, e idem per il monte ore iniziale di ferie. Pertanto, per evitare errori clamorosi, puo' essere utile applicare la protezione alla cartella di lavoro (non ai fogli).
Quanto detto va inteso come "in linea di massima"; dovrai fare gli adattamenti alle formule se alcune delle supposizioni da me fatte sono errate. Comunque se non riesci sai dove trovarci...
Ciao