这纯粹是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
我该怎么做?是否有可用的数字格式?
答案 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)))