2013-04-30 68 views
0

如何將Excel電子表格的單元格B4中的以下數據轉換爲我可以運行數據透視表和圖表的數字「1天23小時11分鐘」?Excel字符串轉換

理想情況下,我想抓住分鐘,只處理幾小時和幾天,併產生一個值(小時)。

1天= 8小時的工作日

由於

CSC

+0

尋找VBA解決方案? – 2013-04-30 20:50:10

+0

如果有一天= 8小時,那麼'23小時11分鐘'似乎很奇怪 - 我預計小時和分鐘不會超過7:59 ....不會「1天23小時11分鐘」=「3天7小時11分鐘「? – 2013-04-30 21:19:08

+0

@barryhoudini:用戶想忽略分鐘... – 2013-04-30 21:49:19

回答

0

嘗試WORKDAY功能。如果您單擊該單元格並鍵入= WORKDAY(8,1),它會告訴您所需的信息。希望能幫助到你!

3

這裏是一個VBA方法。讓我知道如果你不想要VBA方法,我會刪除它。

將此代碼放入模塊中。此代碼考慮到考慮爲days/dayhrs/hr

代碼之間的所有比賽

Function ConvertToHours(rng As Range) As Long 
    Dim DAr() As String, HAr() As String, strVal As String 
    Dim D As Long, H As Long 

    If rng Is Nothing Then 
     ConvertToHours = 0 
    Else 
     strVal = LCase(rng.Value) 

     If InStr(1, strVal, "days", vbTextCompare) Then 
      DAr = Split(strVal, "days") 
      D = Val(Trim(DAr(0))) 

      If InStr(1, strVal, "hrs", vbTextCompare) Then 
       HAr = Split(DAr(1), "hrs") 
       H = Val(Trim(HAr(0))) 
      ElseIf InStr(1, strVal, "hr", vbTextCompare) Then 
       HAr = Split(DAr(1), "hr") 
       H = Val(Trim(HAr(0))) 
      End If 
     ElseIf InStr(1, strVal, "day", vbTextCompare) Then 
      DAr = Split(strVal, "day") 
      D = Val(Trim(DAr(0))) 

      If InStr(1, strVal, "hrs", vbTextCompare) Then 
       HAr = Split(DAr(1), "hrs") 
       H = Val(Trim(HAr(0))) 
      ElseIf InStr(1, strVal, "hr", vbTextCompare) Then 
       HAr = Split(DAr(1), "hr") 
       H = Val(Trim(HAr(0))) 
      End If 
     End If 

     ConvertToHours = (D * 8) + H 
    End If 
End Function 

截圖

enter image description here

2

試試這個公式拿到小時爲十進制

=SUM(MID(0&A1,FIND({"d","h","m"},A1)-2,2)*{480,60,1})/60

假設天,小時,分鐘悉數到場 - 適用於多達99天

如果你不關心分鐘,那麼你可以只使用

=SUM(MID(0&A1,FIND({"d","h"},A1)-2,2)*{8,1})

+0

+ 1你永遠不會驚訝我:) – 2013-04-30 21:48:13