Domanda:
Sto cercando di implementare una formula su Excel per la quale in una cella yy mi restituisca se è un primo, secondo o terzo turno di lavoro, analizzando l’orario immesso nella cella xx. Es, deve restituirmi 1° turno se l’orario nella cella xx è 06:30, ovvero compreso tra le 06:00 e le 14:00.
Risposta:
La questione è abbastanza interessante dato che le ore in Excel non esistono. In realtà è la semplice formattazione della visualizzazione di Excel a fare apparire le ore. Quindi per prima cosa bisogna capire come sono rappresentate le ore in Excel.
Partiamo dai giorni.
Excal usa un numero progressivo per rappresentare i giorni a partire dal 1 gennaio1900 che corrisponde al giorno uno. cosi’ se si formatta una cella in che contiene il numero 1 in formato “data” si ottterrà come data il 1 gennaio 1900. In modo abbastanza interessante se si formatta in formato data una cella che contiene il numero 0 si ottiene lo .. 0 gennaio 1900…
L’algoritmo quindi funziona solo per numeri positivi maggiori di uno. Difficilmente comunque, a meno che non vi occupiate di storia dovrete usare date precedenti al 1/1/1900. Comuqnque sia Excel ha una soluzione anche per gestire queste date. Ma non divaghiamo.
quindi i giorni sono rappresentati da numeri interi progressivi.
Il 1 gennaio 2013 ad esempio corriponde al numero 41275.
bene, come sono rappresentate le ore? semplicemente attraverso i decimail dei numeri!
quindi 41275 corripsonde alla mezzanotte tra il 31.12.2012 e il 01.01.2013 mentre 41275.5 corrisponde al mezzogiorno del 01.01.2013!
sembra complicato? beh non lo é! la formula per trasformare le ore, minuti, secondi nella corretta rappresentazione di Excel è la seguente:
NUMEROEXCEL= (ORE + (MINUTI + SECONDI/60) / 60) / 24
Oppure per farla più facile:
NUMEROEXCEL = ORE/24 + MINUTI/60/24 + SECONDI/60/60/24
se volete recuperare da un numero decimale le corrispondenti ore minuti e secondi potete fare il calcolo all’incontrario attraverso la funzione ARROTONDA oppure usando le funzioni ORA, MINUTO e SECONDO
Bene, siamo pronti per rispondere al nostro lettore.
prima di tutto utilizziamo delle celle in Excel dove rapprentiamo nel formato gradito a Excel stesso gli orari voluti
scrivere quindi in una cella
=6/24+30/60/24
e in una seconda cella:
=14/24
ora prendiamo la cella ce contiene l’ora che dobbiamo verificare e trasformiamola pur’essa nello stesso formato. Qui dipende tutto da come avete l’ora.
A questo punto con i SE potrete verificare se la ora corrente (da verifcare) sia in uno degli intervalli richiesti.
File di esempio: turni_con_le_ore
Qui trovate una lezione di Microsoft sul tema.
Andrea Terzaghi
Ultimi post di Andrea Terzaghi (vedi tutti)
- Refresh in the Website! - 28 Settembre 2017
- Word Cloud - 19 Ottobre 2016
- Extract data from an image or a PDF - 7 Luglio 2016
- Divertissement mathématique - 12 Maggio 2016
- IRPEF, Tasse, Sconti progressivi e sconti regressivi - 25 Aprile 2016
Ottima e tempestiva risposta. Mi avete aiutato molto ed in modo valido, un buon alleato in caso di nuovi sviluppi.
HO UN PROGRAMMA DI CONTEGGIO ORE PER IL TURNO INFERMIERISTICO DOVE 1 ( PRIMO TURNO) CORRISPONDONO AUTOMATICAMENTE 7 ORE LAVORATE, 2 8 ORE LAVORATE E 3 9 ORE LAVORATE. NON RIESCO AD INSERIRE I MINUTI PERCHE’ C’E’ UN BLOCCO CHE NON RIESCO A TOGLIERE. MI POTRESTI AIUTARE OPPURE MI RIESCI A TOGLIERE IL BLOCCO? GRAZIE.
I minuti devono essere insieriti in formato “decimale”: un 1 e 30 minuti, è 1 ora e mezza quindi bisogna inserire 1,5
In generale bisogna insierire la formula come “Ore + Minuti/60”