excel提取文本格式時分秒中數字的方法並計算成秒的公式


類似於這樣的時間格式我們是沒辦法參數計算的,可用下面的公式計算

 

以下公式中只需要將E2修改為數據所在單元格即可出結果(計算結果為秒,其它時間格式請自行轉換)

 

=NUMBERVALUE(NUMBERVALUE(IFERROR(MID(E2,1,FIND("小",E2)-1),"0"))*3600+(IFERROR(NUMBERVALUE(IFERROR(MID(E2,1,FIND("分",E2)-1),"0")),"0")+NUMBERVALUE(IFERROR(MID(E2,FIND("時",E2)+1,(FIND("分",E2)-FIND("時",E2)-1)),"0")))*60+(NUMBERVALUE(IFERROR(NUMBERVALUE(IFERROR(MID(E2,1,FIND("秒",E2)-1),"0")),"0"))+NUMBERVALUE(IFERROR(MID(E2,FIND("分",E2)+1,(FIND("秒",E2)-FIND("分",E2)-1)),"0"))+NUMBERVALUE(IFERROR(MID(E2,FIND("鍾",E2)+1,(FIND("秒",E2)-FIND("鍾",E2)-1)),"0")))

  

=NUMBERVALUE(NUMBERVALUE(IFERROR(MID(E2,1,FIND("小",E2)-1),"0"))*3600+(IFERROR(NUMBERVALUE(IFERROR(MID(E2,1,FIND("分",E2)-1),"0")),"0")+NUMBERVALUE(IFERROR(MID(E2,FIND("時",E2)+1,(FIND("分",E2)-FIND("時",E2)-1)),"0")))*60+(NUMBERVALUE(IFERROR(NUMBERVALUE(IFERROR(MID(E2,1,FIND("秒",E2)-1),"0")),"0"))+NUMBERVALUE(IFERROR(MID(E2,FIND("分",E2)+1,(FIND("秒",E2)-FIND("分",E2)-1)),"0"))+NUMBERVALUE(IFERROR(MID(E2,FIND("鍾",E2)+1,(FIND("秒",E2)-FIND("鍾",E2)-1)),"0")))

 

原理: (下文中有,原文中也很詳細,有需要理解的請跳轉原文查看)

 

小時值 提取小前面的字符
=IFERROR(MID(E2,1,FIND("小",E2)-1),"0")
分鍾值 提取分前面的字符
=IFERROR(MID(E2,1,FIND("分",E2)-1),"0")
秒鍾值 提取秒前面的字符
=IFERROR(MID(E2,1,FIND("秒",E2)-1),"0")

分鍾值2 提取分與時之間的分鍾值
=IFERROR(MID(E2,FIND("時",E2)+1,(FIND("分",E2)-FIND("時",E2)-1)),"0")
秒值2 提取分和秒之間的秒數值
=IFERROR(MID(E2,FIND("分",E2)+1,(FIND("秒",E2)-FIND("分",E2)-1)),"0")
秒值3 提取小時和秒之間的秒數值
=IFERROR(MID(E2,FIND("鍾",E2)+1,(FIND("秒",E2)-FIND("鍾",E2)-1)),"0")

 

將小時值返回的結果中提取數字(去掉空格與非數字格式)              參與最后計算
=NUMBERVALUE(IFERROR(MID(E2,1,FIND("小",E2)-1),"0"))
將分鍾值返回的結果中提取數字(去掉空格與非數字格式)      注:(返回錯誤值,下面再次計算)
=NUMBERVALUE(IFERROR(MID(E2,1,FIND("分",E2)-1),"0"))
將秒鍾值返回的結果中提取數字(去掉空格與非數字格式)       注:(返回錯誤值,下面再次計算)
=NUMBERVALUE(IFERROR(MID(E2,1,FIND("秒",E2)-1),"0"))
將分鍾值2返回的結果中提取數字(去掉空格與非數字格式)             參與最后計算
=NUMBERVALUE(IFERROR(MID(E2,FIND("時",E2)+1,(FIND("分",E2)-FIND("時",E2)-1)),"0"))
將秒值2返回的結果中提取數字(去掉空格與非數字格式)                參與最后計算
=NUMBERVALUE(IFERROR(MID(E2,FIND("分",E2)+1,(FIND("秒",E2)-FIND("分",E2)-1)),"0"))
將秒值3返回的結果中提取數字(去掉空格與非數字格式)                 參與最后計算
=NUMBERVALUE(IFERROR(MID(E2,FIND("鍾",E2)+1,(FIND("秒",E2)-FIND("鍾",E2)-1)),"0"))

 

將分鍾值返回的錯誤值再次返回0                            注:(返回格式中帶空格,還不能直接計算,下面再次修改為數字才能正式計算結果)                        
=IFERROR(NUMBERVALUE(IFERROR(MID(E2,1,FIND("分",E2)-1),"0")),"0")
將秒鍾值返回的錯誤值再次返回0                            注:(返回格式中帶空格,還不能直接計算,下面再次修改為數字才能正式計算結果)
=IFERROR(NUMBERVALUE(IFERROR(MID(E2,1,FIND("秒",E2)-1),"0")),"0")

 

再次將分鍾值返回的結果中提取數字(去掉空格與非數字格式)             參與最后計算  
=NUMBERVALUE(IFERROR(NUMBERVALUE(IFERROR(MID(E2,1,FIND("分",E2)-1),"0")),"0"))
再次將秒鍾值返回的結果中提取數字(去掉空格與非數字格式)             參與最后計算
=NUMBERVALUE(IFERROR(NUMBERVALUE(IFERROR(MID(E2,1,FIND("秒",E2)-1),"0")),"0"))

 

 

方法來源於:  CSDN博主「陵小宇」的原創文章

display函數怎么使用_【Excel函數使用】時分秒時間怎么轉換成秒?(一)

https://blog.csdn.net/weixin_39960920/article/details/110523783

函數怎么使用 vue_【Excel函數使用】時分秒時間怎么轉換成秒?(二)

https://blog.csdn.net/weixin_35318150/article/details/112707720

 

原理如下:

步驟一:提取小時之前的值,也就是提取文本“小”所在位置之前的值。

“小”所在位置之前的字符值,公式為=FIND("小",F3)-1;

從第一個字符起,提取“小”之前的文本串,公式為:

 H3=MID(F3,1,FIND("小",F3)-1)

步驟二:提取“時”和“分”之間的分鍾值。

首先返回“時”和“分”之間的字符長度,公式為:

I3=FIND("分",F3)-FIND("時",F3)

接着繼續用MID函數來提取文本,和小時值不同的是,這次開始的值是從“時”后面的字符開始的,也就是公式

FIND("時",F3)+1

提取分鍾的值公式:

 =MID(F3,FIND("時",F3)+1,(FIND("分",F3)-FIND("時",F3)-1))

步驟三:提取“鍾”和“秒”之間的秒數值,原理跟提取分鍾值一樣。

J3=MID(F3,FIND("鍾",F3)+1,(FIND("秒",F3)-FIND("鍾",F3)-1))
d884cd144898d0b654c236428d9fb591.png

根據以上的公式,我們分別提取了小時、分鍾、和秒的值,那接下來是不是可以用公式計算出秒數值呢?答案是不可以的,因為MID函數返回的是文本串,不能直接用於計算的,上圖中顯示的提取值靠左,而不是數值默認的靠右。

現在還出現了另外一個問題,對於“31分鍾23秒”、“16秒”也就是沒有包含的小時的值,我們無法提取分鍾值,而可以提取秒的值,因為上面提取分鍾值得公式是需要找到“時”的字符才有效,因此我們這里的返回值是錯誤的。

為了能夠有效地提取這兩種格式文本的值,我們還需要添加兩個公式來提取。

分鍾值:

K3=MID(F3,1,FIND("分",F3)-1)

秒鍾值:

L3=MID(F3,1,FIND("秒",F3)-1)

我們用MID和FIND函數已經將數值提取出來,但是一些錯誤的返回值顯示“#VALUE!”,此時我們需要檢驗錯誤返回值,並將錯誤值返回指定值。

IFERROR(value, value_if_error)


H3=IFERROR(MID(F3,1,FIND("小",F3)-1),0)I3=IFERROR(MID(F3,FIND("時",F3)+1,(FIND("分",F3)-FIND("時",F3)-1)),0)
如此類推算出J列跟K列,結果如下圖:


我們可以看出H、I、J、K、L列部分返回的值靠左,意味着這些返回值只是“文本”,並不是數值。如果需要計算出具體的時間,還需要將文本轉化成數值。

很多同學都用過VALUE函數,將文本值轉化成數值,今天我要介紹的是萬金油函數,NUMBERVALUE能夠將空格等少數不規范文本強制轉化為0,只返回文本中含有的單獨數值,如果含有文本字母,將返回錯誤值,本次將用該函數以解決K列和L列的含有多有多余數值的文本。

NUMBERVALUE(Text, [Decimal_separator], [Group_separator ])


我們這里用NUMBERVALUE函數將H列到L列以后得到以下結果:


K3=NUMBERVALUE(IFERROR(MID(F3,1,FIND("分",F3)-1),0))L3=NUMBERVALUE(IFERROR(MID(F3,1,FIND("秒",F3)-1),0))
再次用IFERROR函數以后即可將錯誤值返回為0.

K3=IFERROR(NUMBERVALUE(IFERROR(MID(F3,1,FIND("分",F3)-1),0)),0)L3=IFERROR(NUMBERVALUE(IFERROR(MID(F3,1,FIND("秒",F3)-1),0)),0)

到這一步,已經將所有時間的數值提取出來,即可計算出所有時間轉化為秒的數值。

原公式

 NUMBERVALUE(IFERROR(MID(F3,1,FIND("小",F3)-1),0))*3600+NUMBERVALUE(IFERROR(MID(F3,FIND("時",F3)+1,(FIND("分",F3)-FIND("時",F3)-1)),0))*60+NUMBERVALUE(IFERROR(MID(F3,FIND("鍾",F3)+1,(FIND("秒",F3)-FIND("鍾",F3)-1)),0))+IFERROR((NUMBERVALUE(IFERROR(MID(F3,1,FIND("分",F3)-1),0))),0)*60+IFERROR((NUMBERVALUE(IFERROR(MID(F3,1,FIND("秒",F3)-1),0))),0) 

 

原公式中有問題,部分結果是不准確的
————————————————
版權聲明:本文為CSDN博主「陵小宇」的原創文章
原文鏈接:https://blog.csdn.net/weixin_35318150/article/details/112707720


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM