簡體   English   中英

Excel 2010中的工時計算

[英]Hours Calculations in Excel 2010

我有一個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及更高版本,它就不會將其識別為時間值。

我喜歡這些看似簡單的謎語,所以這是我作為公式和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

您可以使用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時,它會自動轉換為時間。 因此,我可以像您嘗試的那樣對其進行分割...

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)

結合並享受!

假設您在A1中不超過100,000小時,並且您始終顯示小時,分鍾和秒,那么此公式就足夠了

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

將結果單元格格式設置為[h]:mm:ss以將結果作為時間值

在A1中使用10971:12:14 ,在B1中使用1000時,應10:58:16的結果[或將結果單元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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM