【问题标题】:Convert days in decimal to years, months, days, hours, minutes and seconds将十进制的天数转换为年、月、日、小时、分钟和秒
【发布时间】:2017-10-20 21:56:25
【问题描述】:

我有什么:

一个电子表格,其中 C 列由十进制格式的天数组成。

我需要什么:

我需要 E 列将 C 列的值转换为年、月、日、小时、分钟和秒。

我尝试过的:

以下公式可以表示年、日和月,但不表示小时、分钟和秒。

=INT(C9/365)&" Years, "&INT(MOD(C9,365)/30)&" Months, "&ROUND(MOD((MOD(C9,365)),30),0)&" Days"

我的问题:

使用上面的公式,我怎么能同时表示小时、分钟和秒呢?我无法理解嵌套和舍入。

【问题讨论】:

  • 所以你不能只使用这样的东西:=TEXT(C9,"yyyy-mm-dd hh:mm:ss")?还是必须要有年、月、日、时、分、秒的字眼?
  • @ian0411 - 数年和数月都无法正常工作,例如C9 中的 20 会给出这个结果1900-01-20 00:00:00.....但是你可以将它用于附加到原始公式的hh:mm:ss - 请参阅我的答案

标签: excel worksheet-function calculation date-math date-manipulation


【解决方案1】:

一个简单的方法是使用TEXT 函数为您提供小时、分钟和秒(与ian0411's 注释相同),因此使用原始公式的略微修改版本:

=INT(C9/365)&" Years, "&INT(MOD(C9,365)/30)&" Months, "&INT(MOD(MOD(C9,365),30))&" Days "&TEXT(C9,"h:mm:ss")

或者如果你想拼出单位,你可以使用这个版本

=INT(C9/365)&" Years, "&INT(MOD(C9,365)/30)&" Months, "&INT(MOD(MOD(C9,365),30))&" Days"&TEXT(C9," h"" Hours ""m"" Minutes ""s"" Seconds""")

请注意,TEXT 函数是特定于语言的,因此对于非英语 excel 版本,h:mm:ss 可能需要更改

【讨论】:

    【解决方案2】:

    让 Excel 为您计算! ...使用 TEXT 函数。

    DATEDIF 函数(类似于 VBA 的 DateDiff 函数)是一种快速计算整年、月、日、小时等的方法。

    理想的做法是将该值存储为“天数”(应尽可能执行此操作,因为 Excel 以相同的方式存储日期。

    TEXT 工作表函数(或 VBA 中的 FORMAT 函数)可用于格式化持续时间和时间跨度,就像格式化日期和时间一样。

    例如:

    如果单元格A1 包含您想要格式化的值,例如12345,(12,345 天),您可以使用:

    =TEXT(A1,"y \yr, M \m, d \d")
    

    ...将返回:

    33 yr, 10 m, 18 d
    

    使用Y,M,D,H,M,S 等指定日期/时间值的位置。您可以在数字之间指定您想要的任何内容;如果您想要的字母是上面列出的字母之一,您可以在前面放置一个\ 以强制显示该字母(如上例中的d


    如果您在 A1 中的值包括部分日期,例如 12345.6789,您可以将其转换为:

    =TEXT(A1,"y \yr, M \m, d \d, h \hr, m \m, s \s")
    

    ....返回:

    33 yr, 10 m, 18 d, 16 hr, 17 m, 37 s
    

    ? 未记录的工作表函数:DATEDIF

    有一个名为 DATEDIF 的未记录工作表函数(类似于 VBA 的 DATEDIFF 函数),它可以快速计算年、月、日、小时等之间的差异...


    DATEDIF 被视为公式家族的醉表弟。Excel 知道它过着幸福而有用的生活,但不会在礼貌的谈话中谈论它。” —奇普·皮尔逊

    用法:

    DATEDIF 的语法如下:

    =DATEDIF(Date1,Date2,Interval)

    地点:
    - Date1 是第一次约会。
    - Date2 是第二次约会。
    - Interval 是要返回的间隔类型。

    Code  Meaning                         Complete 'calendar' days/months/years        
    ---- ------------------------------- -------------------------------------------------------------- 
     m    Months                          Months between the dates
     d    Days                            Days between the dates
     y    Years                           Years between the dates
     ym   Months Excluding Years          Months between the dates as if they were of the same year
     yd   Days Excluding Years            Days between the dates as if they were of the same year
     md   Days Excluding Years & Months   Days between the dates as if they were of the same month & year
    

    【讨论】:

      【解决方案3】:

      也许是一种更有效的方法,但我相信这应该可行。如果它不只是发表评论,我们可以解决。

      小时

      =INT((C9-INT(C9))*24)
      

      分钟

      =INT((((C9-INT(C9))*24)-INT((C9-INT(C9))*24))*60)
      

      =ROUNDDOWN((((((C9-INT(C9))*24)-INT((C9-INT(C9))*24))*60)-INT(((((C9-INT(C9))*24)-INT((C9-INT(C9))*24))*60)))*60,0)
      

      整件事

      =INT(C9/365)&" Years, "&INT(MOD(C9,365)/30)&" Months, "&ROUND(MOD((MOD(C9,365)),30),0)&" Days,  "&INT((C9-INT(C9))*24)& " Hours,  "&INT((((C9-INT(C9))*24)-INT((C9-INT(C9))*24))*60)&" Minutes, "&ROUNDDOWN((((((C9-INT(C9))*24)-INT((C9-INT(C9))*24))*60)-INT(((((C9-INT(C9))*24)-INT((C9-INT(C9))*24))*60)))*60,0)&" Seconds"
      

      编辑:ROUNDDOWN 代替 ROUND 几分钟(可以关闭一秒钟的一部分)并包含完整的公式

      【讨论】:

      • 我在组合公式时遇到了困难。这是我得到的公式:pastebin.com/TAh2xAW5 但是 27.3 的值将秒的值转换为 60 秒。 IE。 0 年 0 月 27 天 4 小时 47 分 60 秒
      • @ClarusDignus 我已经更新了我的答案。包含粘贴箱中的参考修复,将 ROUND 更改为 ROUNDDOWN 并添加了逗号,请尝试新公式。
      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2012-01-06
      相关资源
      最近更新 更多