如果你是做會計,也許會遇到這樣奇葩的同事:
它給你列的報 賬 清單中,漢字和數位是混在一起的,你卻需要計算出數位的和。
這種漢字和數位混合一起的表格,用sum是無法求和的。難道要一個個的輸入數位求和?
以前蘭色分享過用3種方法提取數位:
Ctrl+E : 在第一個單元格中輸入第一行中的數位,然後按Ctrl + E。可以快速提取數位,但資料來源變動後還需要重復操作
內容積比重排
:透過縮小到1字列寬 - 內容積比重排,把漢字和數位分離,然後再復制出數位,操作有點麻煩也無法隨資料來源更新。
power query
:透過它的拆分列功能,可以拆分出數位。它可以透過重新整理更新結果,但對Excel版本有要求,操作步驟有點多。
今天,蘭色分享一個萬能求和公式,無論資料來源怎麽變,都可以自動提取數位求和。
公式:
="總花費:"
&SUMPRODUCT(--MIDB(B2:B9,SEARCHB("?",B2:B9),2*LEN(B2:B9)-LENB(B2:B9)))&"元"
公式看上去好復雜?不要暈。蘭色帶大家一起剖析一下這個公式後,你就會發出感慨:Excel中原來還有這麽巧妙的公式。
解題思路:
如果 數位在字串的位置和長度是固定的 ,可以直接用 mid(字串,開始截取位置,截取個數) 函式完成 。
但問題時數位位置是不定的,長度是不定的。這種情況下我們可以用公式計算出來。
1、找出數位的開始位置
如果是漢字和數位混合,可以用Searchb函式來尋找數位位置
=SEARCHB("?",B2)
註:帶B的函式是按字節數計算的(一個漢字占兩個字節,數位點一個)
2、計算出數位的位置
利用
2*字元數 - 字節數
,倒推出數位的個數,即:
=2*LEN(B2)-LENB(B2)
3、提取單元格的數位
既然數位開始位置和長度有了,就可以用midb函式提取了
=MIDB(B2,SEARCHB("?",B2),2*LEN(B2)-LENB(B2))
註:因為是字節數計算,所以也要用midb函式,而不能用mid函式
4、提取出所有單元格數位並求和
把B2單元格換成B2:B9,就可以提取出整個區域的數位,然後用sumproduct函式求和
。
=SUMPRODUCT(--MIDB(B2:B9,SEARCHB("?",B2:B9),2*LEN(B2:B9)-LENB(B2:B9)))
註:因為midb截取出來的是文本,所以用--(兩個減號轉換為數位)後才能求和。
最後連線上「總花費」和「元」,公式為:
="總花費:"
&SUMPRODUCT(--MIDB(B2:B9,SEARCHB("?",B2:B9),2*LEN(B2:B9)-LENB(B2:B9)))&"元"
蘭色說 :可能又有同學說,工作中這種情況很少遇到,這麽麻煩的公式就不用學了吧。No!一旦遇到這樣的奇葩問題,如果不會簡單方法會讓你崩潰,二者從今天的公式中你會學到幾個神奇的字串處理思路。可以用來解決其他疑難問題。
蘭色根據多年經驗,錄制了一全套適合新手和初中級階段使用者學習的Excel教程。包括 Excel表格88個函式用法、119個使用技巧、透視表從入門到精通50集、圖表從入門到精通182集 。詳情點選下方連結: