1. 程式人生 > >EXCEL中“X分X秒”轉換成以秒為單位的數字--LEFT, MID和FIND函式的實際應用

EXCEL中“X分X秒”轉換成以秒為單位的數字--LEFT, MID和FIND函式的實際應用

昨天在聯通的網站上查詢了一下沃家庭套餐的使用情況。

聯通的報表做得不錯,有詳細的通話記錄。不過每一次通話的記錄都是“10分24秒”這樣的記錄,我怎麼才能知道到現在為止一共使用了多長時間的通話時長呢?沃家庭的套餐是一個月有300分鐘的免費本地和長途通話時長。我想要搞清楚使用了多少時間,還剩下多少時長。

把網頁上的資料貼上到空白的excel檔案中,如下圖。可以看到D這一欄,也就是“通話時長”這一列的資料是不方便做統計的,求和是求不出來的。腫麼辦?用字元相關的公式做一下轉換了:

G這列是我加上的。可以看到G2這個單元格中的公式是:

=IF( IFERROR( FIND( "分", $D2 ), 0) > 0, LEFT( $D2, FIND( "分", $D2 ) - 1 ) * 60 + IFERROR( MID( $D2, FIND( "分",$D2 ) + 1, FIND( "秒", $D2 ) - FIND( "分", $D2 ) - 1 ), 0 ), LEFT( $D2, FIND( "秒", $D2 ) - 1 ) * 1 )
其實是這個公式是分了兩種情況來處理:

第一種是針對“42秒”這樣的情況,只有秒數,沒有分鐘的相關資訊,這種情況的處理相對簡單: 

LEFT( $D2, FIND( "秒", $D2 ) - 1 ) * 1 )

只需要把D2單元格中“秒”字前面的部分截取出來乘以1就可以了。

第二種情況是“10分54秒”這樣的格式,這就需要把分鐘數和秒數分別截取出來。

LEFT( $D2, FIND( "分", $D2 ) - 1 ) * 60 + IFERROR( MID( $D2, FIND( "分",$D2 ) + 1, FIND( "秒", $D2 ) - FIND( "分", $D2 ) - 1 ), 0 )

這是把“分”字以前的部分截取出來乘以60,再把“分”字與“秒”字之間的字元截取出來乘以1,兩者相加。

這裡需要注意的是有可能源字串中根本沒有“秒”這個字元,如“10分”這樣的話就要用IFERROR函式來處理,如果沒有“秒”字就計為0。
同樣的道理,再用一層IFERROR來區分有“分”字和沒有“分”字的情況,這樣就得到了圖中紅色部分的公式。

EXCEL Formula for Duration Calculaiton in Seconds

用了上面的公式,“秒數”這一欄的資料就變成以秒為單位的數字了。

這樣就可以對它們求和來得到一共用掉了多少分種的通話時長,還剩下多少免費通話時間了。