2011-10-28 17 views
14

Questa è puramente una domanda di foglio di Excel.Formatta un intervallo di tempo come numero di giorni, ore e minuti

Ho un intervallo di tempo che è sostanzialmente una differenza tra due celle, ciascuna contenente una data:

sono riuscito ad ottenere la differenza di tempo in numero di ore e minuti cambiando il formato numerico [h]:mm. Ora vorrei ottenere la differenza in numero di giorni, ore e minuti. Ho provato a impostare il formato numerico su [d]:[h]:[mm] ma non è accettato da Excel.

Ecco quello che ho adesso:

A     B     C (=A2-A1) 
    ---------------- ---------------- ---------- 
1| 14/10/2011 00:00 17/10/2011 07:50 79:50 
2| 14/10/2011 00:00 17/10/2011 11:00 83:00 

Ecco quello che vorrebbe ottenere:

A     B     C (=A2-A1) 
    ---------------- ---------------- ---------- 
1| 14/10/2011 00:00 17/10/2011 07:50 3:7:50 
2| 14/10/2011 00:00 17/10/2011 11:00 3:11:00 

Come posso fare questo? C'è un formato numerico disponibile per questo?

risposta

23

È possibile utilizzare TEXT
= TEXT(B1-A1,"d:h:mm")

nota lo stesso effetto può essere ottenuto utilizzando un semplice formato numerico sulle cellule direttamente

  • selezionare la vostra gamma (cellule C1, C2 ecc)
  • destra fare clic su e Formato celle
  • Personalizzato
  • Tipo d:hh:mm

Se a differenza dei dati di esempio, le vostre differenze di data superano 31 giorni, quindi un approccio come =INT(B1-A1)&":"&TEXT(B1-A1,"h:mm")
funzionerà

+4

Bello, e vorrei usare 'TESTO (B1-A1; IF (B1-A1> 1;" d: hh: mm ";" h: mm "))' per ottenere il numero di giorni solo se la differenza di orario è superiore a un giorno. – Otiel

+0

la formula digitata non è accettata in excel – Toshe

+0

@ tosh, cosa vuoi dire che non è accettato da Excel? – brettdj

7

Attenzione: quanto sopra funziona solo per gli intervalli di meno di 31 giorni. utilizzare

=CONCATENATE(TEXT(FLOOR(B1-A1,1),"@")," Days",TEXT(B1-A1," h:mm:ss")) 

invece per suddetti intervalli di 31 giorni. Questo non andrà bene, quindi sarebbe meglio fare il calcolo in una colonna e quindi stimolare quella colonna per il risultato finale.

+0

Grazie, è quello che stavo cercando, quando sono arrivato da Google. Ma dovrebbe essere "FLOOR (B1-A1,0)" invece, perché vuoi mantenere la parte frazionaria dei giorni? –

+0

Ottengo un # DIV/0! se uso FLOOR (, 0). Il secondo parametro è 'significato', non 'numero di posizioni decimali da conservare'. È possibile fornire "0.1" o "0.01" correttamente per mantenere le posizioni decimali, ma non "0" per eliminarle. In questo caso, "1" è corretto poiché FLOOR è il più vicino a "1". – MrWonderful

1

Quanto segue non è certamente la formula più breve e non una risposta diretta alla domanda, ma lavora per mostrare il risultato corretto (anche su LibreOffice) nel seguente formato:

# giorni ## ore ## minuti # # secondi

=CONCATENATE(TEXT(FLOOR(B2-A2,1),"@")," days ", IF(HOUR(A12)-HOUR(A11)<0,HOUR(A12)-HOUR(A11)+24,HOUR(A12)-HOUR(A11))," hours ",IF(MINUTE(A12)-MINUTE(A11)<0,MINUTE(A12)-MINUTE(A11)+60,MINUTE(A12)-MINUTE(A11)), " minutes ", TEXT(B2-A2,"s"), " seconds") 
0

L'approccio seguente funziona così, supponendo che la data di inizio è nella cella C2 e la vostra data di fine si trova nella cella D2:

=TEXT((D2-C2)-MOD(D2-C2,1),"0") & " days " & TEXT(MOD(D2-C2,1),"hh:mm") 
0

Un fortunatamente appare numero e datetime formati non possono essere combinati, in caso contrario un formato personalizzato di:

0:h:m 

sarebbe il biglietto.Tuttavia, se per campate di 32 giorni o più, si è soddisfatti solo la visualizzazione del numero di giorni (frazionario) è possibile utilizzare un formato personalizzato come:

[>=32] 0.00 "days"; d:h:m 

Il valore della cella rimane numerico.

0

=IFERROR(INT(Date1-Date2)&" Days "&INT(MOD((Date1-Date2);INT(Datw1-Date2))*24)&" Hours "&MINUTE(Fate1-Date)&" Min";IFERROR((Date1-Date2);"NA"))enter code here

Penso che questo dovrebbe fare il trucco, qualunque sia la data che avete.

Problemi correlati