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)