當前位置: 妍妍網 > 辦公

新同事發來一張Excel報賬表,氣的想跳樓

2024-02-18辦公

如果你是做會計,也許會遇到這樣奇葩的同事:

它給你列的報 清單中,漢字和數位是混在一起的,你卻需要計算出數位的和。

這種漢字和數位混合一起的表格,用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集 。詳情點選下方連結: