Estrarre singoli numeri da orari.

Quando sia necessario separare i singoli valori che compongono un orario, per esempio per riportare l'orario su modulistica meccanizzata, dove ogni valore che compone l'orario, deve essere inserito in una singola casella, possiamo utilizzare delle semplici funzioni disponibili sul foglio di lavoro. Vediamo un esempio: nella colonna A abbiamo gli orari; il formato celle in A è impostato a : "personalizzato hh.mm", quindi come orario ore.minuti. Le colonne da C a F sono formattate normalmente a "Generale", e contengono, per ogni cella, i singoli valori che compongono l'orario contenuto in A, stessa riga.

  A B C D E F G
1 13.30   1 3 3 0  
2 19.30   1 9 3 0  
3 08.00   0 8 0 0  
4 15.30   1 5 3 0  
5 04.35   0 4 3 5  
6 12.01   1 2 0 1  

Possiamo usare le seguenti funzioni:

  • ORA(riferimento) - che restituisce la parte ora di un orario (ad esempio, di 13.30, restituisce : 13).

  • MINUTO(riferimento) - che restituisce i minuti di un orario (ad esempio, di 13.30, restituisce : 30)

  • DESTRA(riferimento, num_caratteri) - restituisce, iniziando da destra, il numero di tot caratteri indicato dal secondo argomento. Se num_caratteri è omesso, viene restituito il primo valore partendo da destra.

  • SINISTRA(riferimento, num_caratteri) - come per DESTRA, ma iniziando da sinistra .

  • LUNGHEZZA(riferimento) - restituisce il numero di caratteri che compongono un valore stringa

Per una maggiore descrizione di queste funzioni, rimando alla guida in linea. Vediamo ora le formule impiegate, partendo dalla cella F1, che dovrà contenere il primo numero a destra dell'orario 13.30, cioè 0:

  • =DESTRA(MINUTO(A1)) - la formula è semplice: si estrae la parte destra del valore ottenuto con la funzione MINUTO relativo alla cella A1, che restituisce 30, e con DESTRA otteniamo lo zero (0)

Nella cella E1 dovremo avere la parte a sinistra del valore ottenuto con MINUTO(A1), cioè 3, e quindi la formula :

  • =SINISTRA(MINUTO(A1)) - che restituisce 3

Se il numero di minuti è superiore a 10 (quindi decine), questa funzione restituirà sempre il valore relativo, ma se i minuti sono unità (es.: 13.05), la funzione SINISTRA non legge lo zero di 05 e restituirebbe 5  in quanto primo valore trovato; dovremo quindi impostare come per la funzione ORA (vedi sotto), una condizione che verifichi la lunghezza di "minuti" ; se sarà uguale a due, allora facciamo leggere il valore a sinistra, altrimenti restituiamo zero, così:

  • =SE(LUNGHEZZA(MINUTO(A1))=2;SINISTRA(MINUTO(A1));0)

Ora dobbiamo separare i numeri che compongono l'ora, e sfrutteremo quindi le funzioni DESTRA e SINISTRA con la funzione ORA, quindi in D1 inseriremo questa funzione:

  • =DESTRA(ORA(A1)) che restituisce il valore a destra di 13, cioè 3

Per la cella C1, dovremo usare un accorgimento: poichè stiamo usando come riferimento nelle funzioni, celle che contengono formati Ora, quando un orario è uguale o superiore alle ore 10, (cioè due numeri di cui il primo è un intero superiore a zero) va bene usare le funzioni DESTRA e SINISTRA, ma quando usiamo un orario antecedente le 10.00 anche se noi lo visualiziamo a due numeri, esempio le ore 08.00, Excel lo vede in realtà come 8.00.00

Accadrebbe quindi che la funzione ORA restituirebbe solo 8 (non 08) con la conseguenza che sia DESTRA che SINISTRA restituirebbero entrambe 8, con ovvie imprecisioni nel risultato.

Abbiamo bisogno di creare una condizione (SE) che verifichi la LUNGHEZZA del valore restituito da ORA, e se LUNGHEZZA restituirà 2, useremo per C1 la funzione SINISTRA, altrimenti facciamo restituire zero, quindi in C1 avremo questa formula:

  • =SE(LUNGHEZZA(ORA(A1))=2;SINISTRA(ORA(A1));0)

avremo quindi che se l'ora fosse 08, Lunghezza restituirebbe 1 e la funzione SE salterebbe alla condizione altrimenti (il terzo argomento della funzione) che restituisce " 0 ".

Basterà tracinare poi le funzioni nelle celle sottostanti, e in gioco è fatto.

Buon lavoro

prelevato sul sito www.ennius.altervista.org