Excel 2010中的小时计算

我有一个Excel 2010工作簿,其中包含一个单元格,例如9876:54:32 (手动input),表示电话通话时间为9876小时,54分钟和32秒。

然后,我有一个单元格的值,例如1000 (手动input)代表1000个电话。

我想把这些值分开来,每次通话的平均通话时间为592.615分钟。

我正在做一个常规= A1 / B1,它给了我一个错误。

*编辑*谢谢大脑韦伯斯特纠正我的math。 我的意思是9.876小时。 但重点是,Excel给了我一个错误,而不是我的手工math。 玩弄它,我发现Excel的罚款高达9999:59:59 。 一旦我尝试10000:00:00和以上,它不会将其识别为时间值。

我喜欢这些看似简单的谜语,所以这里是我作为一个公式和VBA尝试的解决scheme:

我原来的:

 = (LINKS(A38;FINDEN(":";A38)-1)/24)+ZEITWERT("0"&RECHTS(A38;LÄNGE(A38)-FINDEN(":";A38)+1)) 

翻译:

 = (LEFT(A38,FIND(":",A38)-1)/24)+TIMEVALUE("0"&RIGHT(A38,LEN(A38)-FIND(":",A38)+1)) 

这将给你一个持续时间给定的10K文本的正确值。 您只需要将单元格的格式设置为[h]:mm:ss 。 那么这些值看起来是一样的,但其中一个是一个string,另一个是一个数字 – 这是一个主要的区别;)

在vba看起来更容易,一旦定义,你可以使用它作为工作表function。

 Public Function GetDurationValue(ByVal strInput As String) As Double Dim arrResult As Variant arrResult = Split(strInput, ":") 'saves you parsing GetDurationValue = (arrResult(0) / 24) + _ TimeSerial(0, arrResult(1), arrResult(2)) End Function A38 = "10971:12:14" =GetDurationValue(A38) =457.13349537037 

您可以使用LEFT和RIGHT函数来检索部分时间值,然后将这些值相加和乘以60 [分钟](3600 [小时])。

像这样的小时,分​​钟,秒(A1是具有时间值的单元格):

 B1=VALUE(LEFT(A1;FIND(":";A1)))*3600 B2=VALUE(LEFT(A1;FIND(":";A1; FIND(":";A1))))*60 B3=VALUE(LEFT(A1;FIND(":";A1; FIND(":";A1; FIND(":";A1))))) 

现在你可以总结一下:

 C1=SUM(B1;B2;B3) 

然后按呼叫计数(A2是呼叫计数的小区):

 D1=C1/A2 

最后像时间格式化它:

 E1=TEXT(D1/(24*3600);"d \day\s hh:mm:ss") 

顺便说一句:我在Excel 2013中尝试过,当我input111:22:33时它会自动转换为一个单元格。 那么我可以像你一样分开它…

看起来,小时> 10000不被Excel识别。 因此,我们需要引入一个IF()来看是否是这种情况,并确定小时> 10000的情况下的替代公式

=IF(ISERROR(FIND(":",A2)),A2/B2, <SCRIPT IN CASE OF >10000>)

现在是<SCRIPT IN CASE OF >10000>现在是:

VALUE(LEFT(A2,FIND(":",A2)))/24+VALUE(LEFT(A2,FIND(":",A2, FIND(":",A2))))/(24*60)+VALUE(LEFT(A2,FIND(":",A2, FIND(":",A2,FIND(":",A2)))))*(24*60*60)

结合和享受!

假设你在A1中不超过100,000小时,并且你总是显示小时,分钟和秒,那么这个公式就足够了

=IFERROR(A1/B1,(LEFT(A1)*10000/24+RIGHT(A1,10))/B1)

格式化结果单元格为[h]:mm:ss以得到结果作为时间值

B1中的10:58:16 10971:12:14和B1中的1000应该给出10:58:16的结果[或格式化结果单元格为[m]:ss以获得分数和秒数,例如658:16 ]

这个版本可以使用任意数量的小时和无或有秒

=IFERROR(A1/B1,(LEFT(A1,FIND(":",A1)-1)/24+RIGHT(A1&IF(COUNTIF(A1,":*:"),"",":00"),5)/60)/B1)