将时间范围格式化为天数,小时数和分钟数

时间:2011-10-28 12:11:30

标签: excel excel-formula

这纯粹是Excel表格问题。

我的时间跨度基本上是两个单元格之间的差异,每个单元格都包含一个日期:

我已设法通过将数字格式更改为[h]:mm来获得小时数和分钟数的时差。现在我希望得到天数,小时数和分钟数的差异。我尝试将数字格式设置为[d]:[h]:[mm],但Excel不接受它。

这就是我现在所拥有的:

    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

这是我想要的:

    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

我该怎么做?是否有可用的数字格式?

7 个答案:

答案 0 :(得分:26)

您可以使用TEXT
= TEXT(B1-A1,"d:h:mm")

注意直接在单元格上使用简单的数字格式可以实现相同的效果

  • 选择您的范围(单元格C1, C2等)
  • 右键单击格式化单元格
  • 定制
  • 输入d:hh:mm

如果与您的示例数据不同,您的日期差异超过31天,则采用诸如此类的方法 =INT(B1-A1)&":"&TEXT(B1-A1,"h:mm")
会工作

答案 1 :(得分:7)

警告:以上内容仅适用于不到31天的范围。 使用

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

而不是31天以上的范围。这样排序不好,所以最好在一列中进行计算,然后对该列进行美化以获得最终结果。

答案 2 :(得分:2)

不幸的是,似乎无法组合数字和日期时间格式,否则自定义格式为:

0:h:m

将是门票。但是,如果对于32天或更长的跨度,您只需显示可以使用自定义格式的(小数)天数(

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

单元格值仍为数字。

答案 3 :(得分:1)

以下当然不是最短的公式,也不是问题的直接答案,而是以下列格式显示正确的结果(也在LibreOffice上):

#days ## hours ## minutes ## seconds

=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")

答案 4 :(得分:0)

以下方法也适用,假设您的开始日期在单元格C2中,结束日期在单元格D2中:

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

答案 5 :(得分: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

我认为无论你拥有什么日期,都应该这样做。

答案 6 :(得分:0)

还有一个类似的问题,除了我,我需要的工作时间除以8,而不是24,因为我需要工作日。所以我想出了一个解决方案,但是要理解它真的很复杂,因为代码看起来像是一团糟,但是如果将它们分段,那就不难了。

=CONCAT(INT(C16*24/8),":",IF(INT((C16-INT(C16))*24)<10,CONCAT("0",INT((C16-INT(C16))*24)),INT((C16-INT(C16))*24)),":",IF(MINUTE(C16)<10,CONCAT("0",MINUTE(C16)),MINUTE(C16)))
  • 请注意,由于需要工作时间,因此我使用“ 8 ”将小时数除以 8 。因此,如果您不想要它,可以忽略它
  • 我需要将结果显示为“ 4:09:08 ”,而不是“ 4:9:8 ”。 (这是“天:小时:分钟”格式)。这就是为什么我在内部使用了额外的 IF() CONCAT()函数的原因。