Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Confronto data con orario con altro orario

  1. #1
    Marius44 non è in linea Scolaretto
    Buonasera a tutti
    Come sappiamo le date in Excel sono rappresentate da numeri seriali in cui la parte intera identifica un giorno e la parte decimale rappresenta l’orario.
    Recentemente in un elenco di date con orario mi è capitato di dover sapere se una determinata data (con relativo orario) corrispondeva ad un orario (solo orario) prefissato.

    Esempio:
    A1 = 00:00:00 B1 = lun, 23/04/18 00:00:00
    A2 = 00:30:00 B2 = lun, 23/04/18 00:30:00

    La formula in C1 = SE(A1 = B1 – INT(B1);””;”errore”) correttamente non scrive nulla
    Se copio la formula da C1 a C2 mi dà errore.
    Non mi spiego il perché.

    Se alla formula suddetta aggiungo una Funzione che limita i decimali (ARROTONDA, TRONCA) allora i risultati cambiano. Attenzione, però, al numero di decimali: come si può vedere dall’allegato la Funzione ARROTONDA ha bisogno di almeno 9 decimali mentre la Funzione TRONCA ne ha bisogno almeno 10.

    Va detto che ho provato anche con VBA ed anche qui occorre la Funzione ROUND(data,8) ma sono sufficienti 8 decimali.

    Mi chiedo ( e vi chiedo): esistono altri modi per effettuare un simile controllo? E se vi sono altri procedimenti, quali sono?

    Grazie per l’attenzione.
    Ciao,
    Mario

    http://www.filedropper.com/orari

  2. #2
    Ben trovato Mario, mi fa piacere rileggerti dopo la mia brutta esperienza sull'altro forum.

    La causa del tuo problema è nel formato IEEE754 usato all'interno di Excel (come di tanti altri prodotti che lo usano, non ultimi tanti linguaggi di programmazione) per rappresentare i valori reali. E' un formato limitato e con problemi di precisione insiti nello stesso che non possono essere eliminati. In particolare, non è possibile rappresentare con precisione alcuni valori decimali e ci sono tanti problemi con i valori periodici.

    Io abbandonerei la strada che hai preso (confronto tra seriali) perché ti porterà sempre problemi e mi dedicherei al formato stringa, con una semplice

    IIf(Format(Cells(ix, 1), "hh:mm") = Format(Cells(ix, 3), "hh:mm"), "ok", "error")

    in cui ix è ovviamente la riga considerata.
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    Marius44 non è in linea Scolaretto
    Ciao Antonio
    ben trovato anche da parte mia.

    Mi sa tanto che (e come poteva essere altrimenti) hai ragione.
    Aggiungo, per chi avesse avuto la balorda idea di leggere questa discussione, che il tuo suggerimento (applicato all'esempio che ho allegato) sarebbe:

    Sub confronto_ore()
    Dim i As Long
    For i = 3 To 27
      Cells(i, 5) = IIf(Format(Cells(i, 1), "hh:mm") = Format(Cells(i, 3), "hh:mm"), "ok", "error")
    Next
    End Sub
    
    ovvero per coloro che non volessero utilizzare la Funzione IIF

    Sub Confronto_Orari()
    Dim i As Long
    For i = 3 To 27
    If Format(Cells(i, 1), "hh:mm") = Format(Cells(i, 3), "hh:mm") Then
      Cells(i, 5) = "ok"
    Else
      Cells(i, 5) = "error"
    End If
    Next
    End Sub
    
    oppure ancora, se si volesse utilizzare una formula, in E3 da copiare in basso

    =SE(TESTO(A3; "hh:mm") = TESTO(C3; "hh:mm"); "ok"; "error")
    
    Per favore dimmi che "ci ho azzeccato"
    Ciao,
    Mario

    PS - Per quanto attiene alla tua "brutta esperienza sull'altro Forum"
    come ben sai ( e parlo a nome di molti ) aspettiamo il tuo ritorno.

  4. #4
    Sì è come hai detto ... tutto ok.

    P.S. grazie per il resto, ma non credo che chi si dovrebbe scusare lo farebbe e quindi manca il presupposto per rientrare.
    ℹ️ Leggi di più su AntonioG ...

  5. #5
    Marius44 non è in linea Scolaretto
    Ciao Antonio
    intanto grazie per la risposta.

    In merito al PS
    Come si vede sono siculo e dalle mie parti un vecchio detto recita:
    "cu avi cchiu sali conza a minestra"
    Anche se non lo reputo necessario, traduco e interpreto: il saggio ci passa sopra.

    Ciao,
    Mario

  6. #6
    Non ci crederai ma anche io sono siciliano e ti posso quindi rispondere con

    Ci vuole u ventu n’ Chiesa ma no astutari i cannili

    Ciao
    ℹ️ Leggi di più su AntonioG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Formattazione Data Excel Con Adattamento Orario E Formato
    Da placidomaio nel forum Microsoft Excel
    Risposte: 1
    Ultimo Post: 02-10-2017, 07:20
  2. Salvare data e orario di una modifica e recuperarla.
    Da Codice_da_Vinci nel forum Microsoft Excel
    Risposte: 6
    Ultimo Post: 24-06-2013, 14:47
  3. Cancellare una cartella con data e orario
    Da motoboy nel forum Delphi
    Risposte: 5
    Ultimo Post: 29-05-2009, 18:10
  4. Prelevare data e orario da server
    Da Shumy300 nel forum HTML, CSS e JavaScript
    Risposte: 5
    Ultimo Post: 24-07-2005, 16:54
  5. orario...
    Da simplyme84 nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 03-12-2004, 17:03