Excel formato ss,000

Anonimo
2022-05-19T13:18:35+00:00

Buongiorno,

su Excel pur avendo formattato una cella col valore personalizzato ss,000 (secondi, poi virgola, poi tre decimali, per i tempi dei settori in pista), inserito un valore 45,678 oltre ad essere variato dal programma in 19,000 mi viene riconosciuto il formato come data, nel senso che la stringa della formula in alto mostra "14/02/1900 16:16:19". Tutte le formule di calcolo interne al foglio non mi riconoscono il valore e quindi calcolano tutt'altro...

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2022-05-23T16:05:53+00:00

Ciao dukeengine,

Grazie Norman,

ho eseguito le tue istruzioni, come difatti anche a te mi risulta nella colonna dei tempi predittivi sempre 00:00,001. In più a me basterebbe avere i tempi dei settori come ss,000 e non come mm:ss,000, sarebbe possibile?

Sostituisci il codice con la seguente versione:

'========>>

Option Explicit

'-------->>

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rng As Range, rCell As Range 

Dim sTime As String 

Dim dTime As Double 

Dim iSec As Long, iMilliSec As Long, ilen As Long 

Const sIntervallo As String = "D7:G106"                  '<<=== Modifica 

Set Rng = Intersect(Me.Range(sIntervallo), Target) 

If Not Rng Is Nothing Then 

    On Error GoTo XIT 

    Application.EnableEvents = False 

    For Each rCell In Rng.Cells 

        With rCell 

            If Application.IsNumber(rCell.Value) Then 

                ilen = Len(.Value) 

                If ilen > 3 Then 

                    iSec = Left(.Value, ilen - 3) 

                    iMilliSec = Right(.Value, 3) 

                    dTime = iSec / 24 / 60 / 60 + iMilliSec / 24 / 60 / 60 / 1000 

                Else 

                    dTime = .Value / 24 / 60 / 60 / 1000 

                End If 

                .NumberFormat = "ss.000" 

                .Value = dTime 

            End If 

        End With 

    Next rCell 

End If 

XIT:

Application.EnableEvents = True 

End Sub

'<<========

Se introduco i valori con le celle D7:G106 formattate come numero, tre decimali, funziona tutto: predittivi, ideal, somme... Forse mi andrà bene questo formato

[...]

Potresti impostare sia un formato generale che un formato numerico.

anche se non so come fa excel a capire che si tratta di secondi con tre decimali...

Infatti Excel memorizza tutti i tempi come un numero: 24 ore hanno un valore di 1 e qualsiasi tempo inferiore a 24 ore verrà memorizzato come parte decimale di 1. Ad esempio, Excel memorizzerà un secondo come 1.15740740740741E-05 , ossia 0, 0000115740740740741 (=1/24/60/60)

===

Regards,

Norman

Immagine

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2022-05-23T07:59:13+00:00

    Grazie Norman,

    ho provato ma non risolve il problema. Ti vorrei allegare il mio file di esempio, con i tempi predittivi e il calcolo del tempo ideale, nelle varie versioni provate. Come vedi non funziona. Anche nella versione precedente segnata come FP1 ogni volta che inserisco un valore nel formato scelto ss,000 in alto nella riga di comando la mostra come una data... non capisco, una volta funzionava correttamente...

    Qualche idea?

    P.S.: come si allega un file qui? Posso mandarti il link Mega, dove puoi scaricarlo. https://mega.nz/file/mK4zzZLJ#RzEWXo7KysEvnnIbvKQUWfPPC_dxmUPf1_C2I_qW35M

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-05-21T11:53:26+00:00

    Ciao dukeengine,

    Grazie Norman, in questo caso li inserisce come testo (se non mi sbaglio "..." inserisce testo) e difatti non mostra di riconoscere il dato. Io ho la mecessità di riportare i numeri rapidamente, perché circa ogni 30-40 secondi devo introdurre il dato, per 4 ore... Grazie comunque per il consiglio!

    Penso che il metodo più rapido possibile per inserire il tuo tempo sarebbe semplicemente digitare le cifre. Quindi, ad esempio, per immettere un tempo di 45 secondi e 678 millisecondi, si dovrebbe semplicemente digitare 45678. Tuttavia, questo scenario richiede VBA.

    Quindi, prova come segue:

    • Fai clic dx sulla linguetta del foglio di interesse
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

     '========>>

    Option Explicit

    '-------->>

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Rng As Range, rCell As Range 
    
    Dim sTime As String 
    
    Dim dTime As Double 
    
    Dim iSec As Long, iMilliSec As Long, ilen As Long 
    
    Const sIntervallo As String = **"A1:A20"                  '&lt;&lt;=== Modifica**
    
    Set Rng = Intersect(Me.Range(sIntervallo), Target)  
    
    If Not Rng Is Nothing Then 
    
        On Error GoTo XIT 
    
        Application.EnableEvents = False 
    
        For Each rCell In Rng.Cells 
    
            With rCell 
    
                If Application.IsNumber(rCell.Value) Then 
    
                    ilen = Len(.Value) 
    
                    If ilen &gt; 3 Then 
    
                        iSec = Left(.Value, ilen - 3) 
    
                        iMilliSec = Right(.Value, 3) 
    
                        dTime = iSec / 24 / 60 / 60 + iMilliSec / 24 / 60 / 60 / 1000 
    
                    Else 
    
                        dTime = .Value / 24 / 60 / 60 / 1000 
    
                    End If 
    
                    .NumberFormat = "mm:ss.000" 
    
                    .Value = dTime 
    
                    With .Offset(0, 1) 
    
                        .NumberFormat = "0.00000000000" 
    
                        .Value = dTime 
    
                    End With 
    
                End If 
    
            End With 
    
        Next rCell 
    
    End If 
    

    XIT:

    Application.EnableEvents = True 
    

    End Sub

    '<<======== 

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm.

    Questo codice non richiede alcun intervento da parte tua; è sufficiente digitare le cifre richieste nell'intervallo A1:A20 e il codice convertirà il valore digitato nel formato mm:ss,000. Il codice inserirà facoltativamente anche il valore decimale corrispondente nella colonna B. In entrambi i formati è possibile estrarre il minimo, il massimo, la media ei valori possono essere sommati o manipolati come qualsiasi altro valore numerico.

    Potresti scaricare il mio file di prova dukeengine20220521.xlsm

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-05-21T08:54:06+00:00

    Grazie Norman, in questo caso li inserisce come testo (se non mi sbaglio "..." inserisce testo) e difatti non mostra di riconoscere il dato. Io ho la mecessità di riportare i numeri rapidamente, perché circa ogni 30-40 secondi devo introdurre il dato, per 4 ore... Grazie comunque per il consiglio!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2022-05-19T14:15:13+00:00

    Ciao dukeengine,

    su Excel pur avendo formattato una cella col valore personalizzato ss,000 (secondi, poi virgola, poi tre decimali, per i tempi dei settori in pista), inserito un valore 45,678 oltre ad essere variato dal programma in 19,000 mi viene riconosciuto il formato come data, nel senso che la stringa della formula in alto mostra "14/02/1900 16:16:19". Tutte le formule di calcolo interne al foglio non mi riconoscono il valore e quindi calcolano tutt'altro...

    Prova a immettere i valori così:

           **="00:00:45,678"\*1**
    
    [![Immagine](https://learn-attachment.microsoft.com/api/attachments/4afe952f-8d41-43ae-94b1-16e8468b9884?platform=QnA
    

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento