Excel高手數字提取進階思路詳解!看到最後,我整個人都傻了!

2021-02-23 Excel辦公實戰

今天主要分享一下關於從文本中提取數值的公式是一步一步演變到大家今天所看到的樣子的主要思想和思路!

如果你真的想學習,靜下心來,內容較長,聽我慢慢道來!全部看完,你必定有所收穫~!

友情提醒:全文4000字,24個圖+動畫,預計閱讀10分鐘!

案例很簡單:提取其中的金額數值

方法有很多,本篇的主題是使用公式的思路講解!

1、這種從文本中提取數字。那麼我們第一步就要找到我們要提取數字開始的位置!
2、怎麼找呢?數字0-9共10個,只有這10種情況,那麼我們就一個一個去查找這10個數字,找出10個數字首次出現的位置,然後獲取最小的就是開始的位置!
3、那麼查找用什麼呢?如果你懂一點基礎,應該會知道有FIND這個函數!FIND函數比較簡單,使用第一參數在第二參數中查找,如果找到就返回對應的首次位置!比如案例中有一個0,分別是第4和第5位!但是結果只返回4!因為 A2單元格中並沒有1,所以返回一個錯誤值#VALUE!有了以上基礎知識,那麼我們就可以去查找了!一般新手可能會考慮分別查找然後取最小!
就像這樣,在上面他添加輔助列0-9,然後可以拖動公式逐個查找!但是這裡有錯誤值怎麼辦?按照正常思路,你可能想把錯誤值轉成其他數值,
但是我們要取最小出現的位置,所以可以使用IFERROR容錯處理換成一個足夠大的,這樣就不影響我們取小了!
=IFERROR(FIND(C$1,$A2),99)

但是其實這個數字不太好確定,我們不知道什麼位置會出現數字,但是有一點,就是只要數字無關的數字出現在內容的最後,那麼肯定不會影響我取最小!比如 房租900元 ,0-9出現在元後面,肯定不影響我們查找數值首次出現的位置!轉成這樣 房租900元0123456789,我們再來查找看看這樣的話,既不會影響我們查找首次出現數字的位置,也不會因為查找不多而報錯!由於FIND返回首次的位置,所以就算後面出現了其他數值也不影響先出現數字的位置!
但是我們不能去直接修改單元格的內容,所有我們應該把0-9拼接到公式中去
=FIND(C$1,$A2&"0123456789")

4、按照一般思路,所有的數值位置都找到了,下面取最小值就可以了!
結果是3,也就是首次出現數字位置是第三個位置,也就是9對應的位置!
你以為這樣就結束了嗎?其實這只是開始,我們說了是一般思路!
但是總是有一些數理邏輯比較好的同學,他們覺得0-9這10個數字,使用輔助列太麻煩了,要是可以直接寫在公式中就好了,這個直接一次性寫在公式中,也就是寫入一組數,也就是大家初期認識的數組了!
他說一組大括號包裹著的  {0,1,2,3,4,5,6,7,8,9}
=FIND({0,1,2,3,4,5,6,7,8,9},$A2&"0123456789")

以上公式結果會是10個數字,分別對應0-9這個10個數字首次出現的位置!但是這樣的長度,還是無法讓他們滿意的,這樣的數值,都是連續的就好像序號一樣,那麼Excel是否有函數可以生成序號的,當然有,你稍微找找應該發現ROW,他可以返回你說給定單元格的行號!給多個就返回多個,『就是返回A1:a10單元格的行號對應1到10,可以我們要0-9,但是由於我們不關注列,所有可以直接寫行號即可!
=FIND(ROW($1:$10)-1,$A2&"0123456789")

如果你是你,看到上面的簡化,你肯定也看第二參數不爽,覺得應該也可以進一步簡化!
當然同樣是數理邏輯好的同學出現了,他們想只要一個數值包好0-9就好了,但是還不能太長,那麼最好的就是分數,還要除不盡或者除得盡,這個10個數字都有,其實這樣的數值有很多,但是後續延續下來常用的就是1/17=0.0588235294117647  0-9都在其中!當然你也可有可能看到5^19=19073486328125      這個數,和上面不同的是這裡沒有小數點,如果你提取的數值中有小數,那麼推薦1/17,沒有則可以使用5^19次方!有了上面的特殊數值,那麼第二參數也就可以進一步簡化了!▼這就是目前最流行查找數值首次出現數字位置的經典公式了!
=FIND(ROW($1:$10)-1,$A2&1/17)

一個經典公式,現在大家都在用,但是他背後真的經歷了很多,感謝那位數理邏輯好的同學,感謝這些開荒者!
一個數學好的不一定是函數高手,但是函數高手必定是數理邏輯好的!
查找到了開始的位置,下面其實就比較簡單了,直接從這個位置截取,截取的長度有數值的個數確定!
到底有多少個數字呢,我們可以採用第一種思路,查找0-9,統計結果是數值的個數!
=SUM(--ISNUMBER(-MID(A2,ROW($1:$99),1)))判斷是否是數值,我一位一位拿出來,用ISNUMBER判斷一下不就知道了嗎?只要要截取多少,不確定,我們就給一個足夠大的數值就行!你可能看到了兩個符號,經常也好奇幹嘛用的,其實MID是文本截取函數,截取的結果都是文本型的,ISNUMBER識別不了,想要識別必須轉成數值型!
而文本型數值經過四則運算就可以轉成數值型,這裡的﹣ 其實就是讓文本型數值轉成數字,但是其他漢字文本就會變成錯誤值,當然並不是影響ISNUMBER!

最後是外面的--,其實也是類似的作用,這是這次是把邏輯值轉成數字,--TRUE=1,--FASLE=0,這個就是Excel的邏輯約定!如果我們截取9個長度,看一下內容計算後的結果,中間三個1,對應這900這裡其實還不夠嚴謹,那就是如果是小數的問題,所以還要把小數點考慮進去
=SUM(--ISNUMBER(-MID(A4,ROW($1:$9),1)))+ISNUMBER(FIND(".",A4))我能修改了一個數值,加入了小數點,可以發現結果是4,完全OK!開始位置和截取的長度都有了,其實就簡單了,只要把他們帶入MID函數即可!
所以在沒簡化截取長度公式的時候,你的公式應該是這樣!
=MID(A2,MIN(FIND(ROW($1:$10)-1,$A2&1/17)),SUM(--ISNUMBER(-MID(A2,ROW($1:$99),1)))+ISNUMBER(FIND(".",A2)))實在是太長了,這一次不需要數值邏輯好的,我們只需要知道一個函數即可,那就是COUNT,他就是統計數組或者區域中數值個數的
=SUM(--ISNUMBER(-MID(A4,ROW($1:$9),1)))+ISNUMBER(FIND(".",A4))
COUNT(-MID(A4,ROW($1:$99),1))+ISNUMBER(FIND(".",A4))

計算按照這個思路,還是長的!繼續簡化,這次就是數理邏輯簡化了!考慮小數點,要是能放到公式中就好了,由於Excel認識 「.5」 ,會將其 識別成0.5
所以我們可以考慮截取兩位,這樣小數點問題就不用擔心了!
=COUNT(-MID(A2,ROW($1:$99),2))+1

=MID(A2,MIN(FIND(ROW($1:$10)-1,$A2&1/17)),COUNT(-MID(A2,ROW($1:$99),2))+1)其實到這裡,基本簡化結束了,但是還有一種情況沒有考慮,那就是負數情況
如果也考慮進去,那麼首先開始位置的公式要稍微調整一下=MID(A2,MIN(FIND({"","-"}&ROW($1:$10)-1,$A2&"-"&1-ROW($1:$10))),COUNT(-MID(A2,ROW($1:$99),2))+1){"","-"} 拼接上主要考慮有或者沒有符號兩種情況,同樣被查的數據也要同時考慮,這裡我們就不再進一步展開了!F9看一下應該就能明白!以上比較通用的數值提取常規的思路演化!希望你能從中學習到或者聊到到一些思路!總是有朋友讓我推薦Excel學習書籍!今天我就推薦基本自己讀過的,算的上國內目前比較不錯的幾本!第一本:Excel2016應用大全,EH出版,函數覆蓋比較全面,也有一定的套路分享!適合函數新手和進階的同學!如果你想學習表格設計,需要補充一點基本設計理論,我推薦這本也是我目前比較喜歡的一本,適合新手!其中雖然有一些小編不敢苟同,但是整體還是非常不錯的!第三本:關於Excel開發的,比較適中中高階段的VBA用戶!目前沒知道上架的資源,有需要的可以到我的知識星球下載!
2013版本添加了快速填充這個智能填充功能,我們很多數值提取都可以Ctrl+E 輕鬆搞定,如果有個別發現提取不正確,只要稍微調整一下即可!看到這裡很多人可能說,有這麼好用的功能,我還學公式幹什麼?重要的從來都不是什麼公式,而是處理的問題的思路!
當然大家也可以使用我開發的正則表達式自定義函數處理:
或者使用VBA、PowerQuery都是不錯的方法!
感謝(收藏、點讚、在看、轉發),您的鼓勵是小編不斷創作的動力!

興趣是最好的老師

相關焦點

  • excel 人民幣符號填寫和提取數字
     提示:點擊上方"excel教程"↑免費訂閱  Excel提取數字
  • 我太難了!18位數字編碼要提取,確定不是開玩笑?
    要求根據C列的訂單編號信息從中提取出18位長度的數字編碼D2的公式怎麼寫=MID(
  • 提取數字【Excel分享】
    提取數字大家好,今天和大家分享「提取數字」,這個素材來自ExcelHome論壇的一個提問,下面我用2種方法講解一、題目要求:提取¥後面的,元前面的數字substitue函數4個參數第1參數:從那裡查找替換第2參數:舊的,被替換的第3參數:新的,替換成的第4參數:替換第幾個,如果不寫,全部替換從¥提取99個,這樣得到數字和元字,最後用substiute函數把元字替換掉三、第2種解法:公式
  • 【Excel提取數字】用5個簡單公式從混合文本中提取數字
    大家好,前面的文章中小編分享了使用快捷鍵【Ctrl+E】技巧完成混合文本提取數字,適合初學者和函數不熟悉的同學。 對於熟悉函數的小夥伴們,還是偏向於公式來提取數字,畢竟有些混合文本用函數公式提取比技巧要方便快捷,只要解決如何設置公式,再多的單元格複製公式就可以了01:數字固定長度、在文本的左邊或者右邊   像上圖表格中數字都在右邊,而且手機號我們都知道是11位,這樣我們可以直接用函數來提取方法:在B2單元格輸入公式:=
  • 技術貼 如何從Excel表格中批量提取數字?
    在工作中,會不會經常遇到這種情況(反正我經常遇到):老闆走過來,扔給你一個U盤,小李子啊,裡面有個10M的表格,幫我把其中用戶信息的編號(戶號、學號等等)複製出來,下午交給我!當我打開表格之後,我驚呆了。10000多行的數據,難道要我一個一個去把數字複製出來?加班到天荒地老?
  • Excel單元格有文字和數字並存,提取統計妙招!
    我想要的,都能在EXCEL裡表達出來,這話誰說的,一點沒錯! Excel提取數字:  當你發現一個單元格裡有文字和數字並存的時候,想單獨提取裡面的文字或者數字時,是不是手工的複製再粘貼出來,或者用計算器一個一個的加減統計,甚是讓人頭疼,那樣又讓你返回到了遠古時代,做表格,不是畫畫表格線,篩選一些數據就是效率,就是懂EXCEL,有時候需要配合公式準確自動運算,達到自己想要的結果,才能讓你放開雙手,輕鬆的工作
  • Excel中提取漢字的三種高效快捷技巧(包含函數公式提取漢字)
    問題:商品名稱跟型號混合在一起,如何快速提取商品名稱,也就是左邊的漢字?本文我們將會分享三種excel中提取漢字的方法。
  • 添加前導0,難倒一大堆函數高手【Excel分享】
    大家好,今天和大家分享「添加前導0,難倒一大堆函數高手」,題目的意思是這樣的,每個單元格裡的乘號*之間,不夠4位的添加0補位,補到4位,如下圖,根據A列數據,得到B列效果,大家先不要看我的解法,自己想幾分種,看自己能否有更好的解法。在留言處留言,我們大家一起學習。如果你覺得自己函數還可以,認為自己是函數高手更應該先想想,自己有什麼好的解法,解不出來再看我的解法。
  • 99%人不會的Excel橫向篩選,竟如此簡單!
    一、非數字橫向篩選【例1】篩選銷售3部所有評級為A的月份2、再按Ctrl + \ 選中所有非A的單元格,最後按Ctrl+0隱藏思路決定出路,Excel高手總用你想不到、又熟悉的功能,解決你覺得無法實現的難題。怎麼才能達到這個境界?唯手熟爾,你見的多了,你用的多了,自然也成高手了。
  • Excel提取斜槓之前的數字累加求和
    來自:IT部落窩連結:http://www.ittribalwo.com/article/2209.html本篇教程介紹Excel提取斜槓之前的數字,並將這些數字進行求和。A列數據:斜槓之前的數字是群現有人數,斜槓之後是群能容納的總人數。比如:1600/2000,表示此群能容納2000人,現有人數為1600人。以此類推,最後,計算所有人現在的實際人數之和。Excel提取斜槓之前的數字累加有兩種方法,使用公式和使用分列完成。
  • Excel怎樣從字符串中提取位置和長度不固定的數字
    情況1:數字前後有特定的分隔符如果數字前後有特定的分隔符,比如()、##等分隔符,那麼我們可以通過查找這些分隔符的位置,來定位到數字的位置。比如下圖所示的這個案例,要提取的數字是所有的加分值,每個加分值的前面都有一個「+」號,後面都有一個「分」字。
  • 這個Excel問題難倒了一大片高手……
    支持我,也為自己加油!前些天在VBA培訓群裡,看到同學的聊天記錄:「學了才知道以前怎麼那麼傻」,我相信這位同學說的不是假話。那年,我認為自己的Excel水平還可以,當時我會的函數超不過八個,依稀記得我會Vlookup,Sum,Sumif,Countif,If,連VBA是啥都不知道,只知道財務部有個高手用宏整理數據,但這並不影響我堅定地認為自己的Excel水平還不錯。後來,因為工作原因,離Excel越來越遠,直到有一天我想開始做一個關於Excel使用技巧的公眾號,這才開始想要全面的了解下Excel。
  • 巧妙提取小數點後第二位數字
    巧妙提取小數點後第二位數字工作中總會遇到字符提取的需求,在涉及小數點的數字提取時,只要思路對頭,找到正確的方法,提取數據會變得很簡單。今天分享一個提取數字的思路和方法。=RIGHT(TRUNC(A2*100))這個思路巧妙地避免了常規的先查找小數點的位置,再判斷待提取數字的位置等一系列麻煩。如果你覺得有用,就分享給朋友們看看吧~更多的Excel應用技巧,可以點擊文尾的「閱讀原文」,獲取更多教程。
  • Excel函數進階必備的思維和套路有哪些?
    在一些字符競賽中經常會看到如上寫法!2、SUMIF結果如果是數組,尺寸由第二參數決定,第二參數可以是多行多列的區域或者常量數組!本案例中是三列多行的內存數組4、權重思維!7、分離其實就是要獲取到整數和小數部分就OK了,但是如果直接MOD和INT就太繁瑣了!
  • 看看excel高手是怎樣玩row函數!
  • 真正的高手,除了不能讓Excel生孩子,什麼事都幹得出來.
    在我認識的人中,一半人想到了綠色,一半人想到了表格。連我那年過三歲半的大侄子,都知道是個軟體。但當我翻開詞典時,發現它只是一個很普通的詞彙,並沒有表格的釋義,到底發生了什麼?Excel自己都沒想到,啊?我明明什麼都沒做啊,為什麼我突然火了?不得不說,取名字,真的很重要~時至今日,最困擾面試者的、面試官最常問的問題也變成了...
  • 遇到不規則數據,Excel高手是這樣分離數字和文字的~
    【解析】MIN(IFERROR(FIND(ROW($A$1:$A$10)-1,A2),""))用來尋找第一個數字所在的位置。由於後面都是數字,可以用MID來提取數字。如果數字多,可以換成比20更大的數字。
  • Excel教程:提取小數點
    【EXCEL視頻教程】【Excel視頻教學】截取函數家族(left、right、mid、len、lenb)的應用一【Excel視頻教學】截取函數家族(left、right、mid、len、lenb)的應用二【EXCEL圖文教程】【計算機應用】學習EXCEL函數,有很多人都覺得自己會很多函數啊
  • 看到同事年終總結的Excel報表,我徹底服了
    Excel作為大家都熟悉的辦公軟體,特別是對每天需要接觸大量數據的人來說,打開Excel的動作宛如條件反射般自然。基礎操作6歸6,碰上一些特殊的數據處理,各類可視化圖表的製作,還是得網上一頓搜索,跟著步驟一步步操作,最後還是各種小問題不斷,只能請年輕人來幫著解決。
  • 這才是Excel高手真正的水平!
    他這些年招聘了很多人,有應屆畢業生也有社會成熟人才,這些人的簡歷裡不約而同的寫著「精通office辦公軟體」,可在實際工作中卻令人大跌眼鏡,他們以為記錄個數據,進行個匯總就是精通Excel了。Word不好,不會太明顯;PPT不好,還可以下載模板;可Excel要是不好,連"度娘"都救不了.然而學會Excel,對我們來說有什麼好處呢?