Excel 将时间跨度格式化为天数、小时数和分钟数

Excel 将时间跨度格式化为天数、小时数和分钟数,excel,excel-formula,Excel,Excel Formula,这纯粹是一个Excel表格问题 我有一个时间跨度,基本上是两个单元格之间的差异,每个单元格包含一个日期: 通过将数字格式更改为[h]:mm,我成功地获得了小时数和分钟数的时差。现在我想得到天数、小时数和分钟数的差异。我试图将数字格式设置为[d]:[h]:[mm],但Excel不接受 以下是我现在拥有的: A B C (=A2-A1) ---------------- ----------------

这纯粹是一个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
我该怎么做?有数字格式吗?

您可以使用文本 =TEXTB1-A1,d:h:mm

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

选择范围单元格C1、C2等 右键单击并格式化单元格 风俗 类型d:hh:mm 如果与示例数据不同,您的日期差异超过31天,那么 =INTB1-A1&:&TEXTB1-A1,h:mm
将起作用

警告:以上仅适用于31天以下的范围。 使用


而对于31天以上的范围。这不会很好地排序,因此最好在一列中进行计算,然后为最终结果美化该列。

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

天小时分钟秒

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

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

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

不幸的是,数字和日期时间格式似乎不能组合,否则将使用以下自定义格式:

0:h:m
这是票。但是,如果对于32天或更长的跨度,您只需显示小数天数即可,您可以使用如下自定义格式:

[>=32] 0.00 "days"; d:h:m
单元格值保持为数字

=IFERRORINTDate1-Date2&Days&INTMODDate1-Date2;INTDatw1-Date2*24小时和分钟1日期和分钟;日期1-2;这里没有输入代码


我想这应该可以解决问题,不管你有什么约会。

有一个类似的问题,除了我,我需要小时除以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函数。
很好,我会使用TEXTB1-A1;IFB1-A1>1;d:hh:mm;h:mm仅当时差大于一天时才获取天数。@tosh Excel不接受它是什么意思?@tosh:use TEXTB1-A1;汉克斯先生,当我从谷歌来到这里的时候,我一直在寻找这个。但是它应该是FLOORB1-A1,0,为什么要保留天数的小数部分?我得到一个DIV/0!如果我使用地板,0。第二个参数是“重要性”,而不是“保留的小数位数”。您可以成功地提供“0.1”或“0.01”来保留小数位数,但不能提供“0”来消除小数位数。在本例中,“1”是正确的,因为它离“1”最近。实际上这对我来说最合适,但为了避免混淆,因为::format通常被视为hh:mm:ss,我使用了以下内容:[>=32]0.00天;[D2-C2-MODD2-C2,1可以简化为INTD2-C2,不是吗?
=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)))