Precisione della data di Excel e scarto inaspettato di precisione <1s


1

Il problema

Una cella datetime contiene dati con precisione fino a decimi di secondo o maggiore precisione, ma scarta questa precisione in "seconda" precisione quando i dati della cella vengono modificati, anche se non viene modificato nulla.

Per ricreare

Ovviamente elementi di questo potrebbero essere locali, macchina e / o specifici dell'utente, ma il sotto rappresenta la mia esperienza su 2 desktop e un laptop, sempre Excel 2010, UK.

  1. Inserire "19/04/2015 13: 26: 15,456" in una cella senza le virgolette (formato UK, quindi presumibilmente il 19/04/2015 negli Stati Uniti); premere Invio per accettare i contenuti.
    • Excel decide di formattare questo come "mm: ss.0", rendendolo come "26: 15.5"
  2. Torna alla cella in questione senza modificarlo ancora
    • si può vedere che ha "perso" la precisione nella barra della formula, mostrando "19/04/2015 13:26:15" senza frazioni di secondo. Tuttavia, la cella mostra ancora "26: 15.5", che indica con la coda .5 che la precisione è ancora effettivamente presente.
  3. CTRL-1 e cambia il formato da "mm: ss.0" a "gg / mm / aaaa hh: mm: ss.000". Ora viene visualizzato correttamente come "19/04/2015 13: 26: 15,456" nella cella (ma ancora senza il .456 nella barra della formula).
  4. Questo è il punto cruciale del problema; ora premi F2, quindi premi invio; cioè "modifica" la cella ma senza cambiare nulla. La precisione & lt; 1 secondo viene scartato e la cella ora mostra "19/04/2015 13:26:15. 000 "

Ciò significa che se modifico la parte della data di una cella (cioè cambio da aprile a maggio, o anticipo di un anno, ecc.) O semplicemente accidentalmente facendo doppio clic su di essa, butto via ogni volta la precisione decimale. C'è un modo per impedire che ciò accada?

Per dimostrare ulteriormente che il valore sta cambiando e non solo la formattazione, ho aggiunto una formula a una cella adiacente per rendere la data come decimale (10 dp), e il valore cambia solo immediatamente dopo il punto 4 sopra.

Risposte:


1

Se hai una configurazione di cella come data / ora come la seguente:

enter image description here

Seleziona la cella ed esegui questa breve macro:

Sub beforeEDIT()
    Dim s As String

    With ActiveCell
        s = .Text
        .ClearContents
        .NumberFormat = "@"
        .Value = s
    End With
End Sub

Converte la cella in puro testo (e conserva millisecondi) . Puoi quindi modificare la cella, cambiare mese o giorno, ecc.

Quando hai completato le tue modifiche, esegui questa seconda macro per riconvertire il testo in data / ora.

Sub afterEDIT()
    With ActiveCell
        .NumberFormat = "mm/dd/yyyy hh:mm:ss.000"
        .Value = .Value
    End With
End Sub

Ben fatto. I miei sforzi per convertire in string / testo non sono riusciti a conservare il layout (convertito in rappresentazione numerica). Spiacente, non posso effettuare l'aggiornamento - rep troppo basso :(
AndyBrown

@AndyBrown Grazie per il feedback!
Gary's Student
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.