Excel fornisce una serie di funzioni che restituiscono VERO o FALSO a seconda del contenuto di una cella. Ad esempio, VAL.VUOTO restituisce VERO se una cella è vuota, VAL.ERR restituisce VERO se una cella contiene un valore di errore e VAL.TESTO restituisce VERO se una cella contiene testo. Potresti chiederti se è possibile determinare se una cella contiene un orario.
La risposta breve è no, non puoi: Excel non contiene alcuna funzione per indicare se una cella contiene un orario. Il motivo è abbastanza semplice: gli orari e le date in Excel non sono tecnicamente altro che numeri. Una data è qualsiasi numero compreso tra 1 e 2958465, che rappresentano le date dal 1/1/1900 al 31/12/9999. Se aggiungi una parte decimale al numero, allora rappresenta l’ora (0 è mezzanotte, 0.25 sono le 6:00, 0.5 è mezzogiorno, ecc.).
Conoscendo l’intervallo di valori che possono essere utilizzati per date e orari, oltre al fatto che una cella contenente un orario deve essere formattata correttamente per visualizzare un orario, è possibile creare una formula che indichi se una cella contiene un orario:
=SE(E(CELLA("formato";B2)>="D6";CELLA("formato";B2)<="D9");"Formato Ora";"Non Formato Ora")
Questa formula controlla la formattazione applicata alla cella B2. Se la formattazione è uno dei formati comunemente utilizzati per le ore, restituisce il testo “Formato ora”. Se viene utilizzata una formattazione diversa, la formula restituisce “Non Formato Ora”.
Un approccio diverso consiste nel verificare se il valore nella cella B2 è un valore temporale valido. Puoi farlo usando una formula come la seguente:
=SE(ORARIO.VALORE(TESTO(B2;"hh:mm:ss"))=B2; "Orario"; "Non orario")
La funzione funziona correttamente finché la cella B2 contiene solo un’ora. Se la cella contiene sia una data che un’ora, la funzione restituisce sempre “Non orario”.
Per ottenere il meglio da entrambi i mondi, controllando i formati e il valore nella cella, prendi in considerazione la creazione di una funzione definita dall’utente in VBA. Il motivo è semplice: VBA include la funzione IsDate che non solo esamina l’intervallo corrente del numero, ma verifica anche che la cella sia formattata come una data. La macro seguente fornisce un esempio di come creare una funzione di questo tipo:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Per utilizzare la funzione, utilizza la seguente formula in una cella:
=IsTime(B2)
La funzione legge come viene visualizzato il valore (utilizzando la proprietà text dell’oggetto cell) e quindi tenta di convertirlo con la funzione TIMEVALUE. Se si tratta di una data (determinata dalla funzione IsDate), la visualizzazione è un’ora valida. Se non è una data, VBA genera un errore, che il codice è programmato per ignorare.