2

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

然后我有一个单元格,其值1000(手动输入)代表 1000 个调用。

我想将这些值相除以获得每次通话 592.615 分钟的平均通话时间。

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

* 已编辑 * 感谢 Brain Webster 纠正我的数学。我的意思是 9.876 小时。但关键是 Excel 给了我一个错误,而不是我的手动数学。玩弄它,我发现 Excel 对我来说很好,值高达9999:59:59. 一旦我尝试使用 10000:00:00 及以上,它就不会将其识别为时间值。

4

4 回答 4

2

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

我原来的:

= (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. 然后这些值看起来相同,但一个是字符串,另一个是数字 - 这是一个主要区别;)

在 vba 中它看起来更容易,并且一旦定义,您可以将其用作工作表函数。

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
于 2012-11-01T16:59:31.850 回答
1

您可以使用 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 中尝试过,当我在单元格中输入 111:22:33 时,它会自动转换为时间。那么我可以像你尝试的那样划分它......

于 2012-11-01T15:42:52.480 回答
1

Excel 似乎无法识别小时数 > 10000。因此我们需要引入一个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)

结合并享受!

于 2012-11-01T16:10:36.967 回答
1

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

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

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

10971:12:14A1 和1000B1 中应该给出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)

于 2012-11-02T10:37:46.963 回答