這個提取單元格數字的公式很強悍,看懂這個思路你就厲害了!

2020-10-20 Excel基礎學習園地

偶然在群裡看到一個關於數字提取的問題,大家一起來看看吧:

這是一個典型的不規則數據,文本和數字混合(還有符號),數字還有小數。如果非要說有規律的話,就是每個單元格只有一個數值,並且是正數。

例子中的公式為:

=MAX(--TEXT(MID(A2,ROW($1:$10),COLUMN(A:H)),"0.00;;0;!0"))

當然這個公式不是唯一的解法,還有一些其他的公式可以實現,我們今天的主要目的也不是一題多解,研究提取數字的問題。而是想借這個例子,來分析裡面涉及到的知識點,下面我們一起來分析一下這個公式:

首先,這是一個數組公式,必須按三鍵完成輸入(有關數組公式的基本知識文末會有推薦閱讀的文章,請根據自己的情況選擇閱讀)。

其次,這個公式裡用到了五個函數:max,text,mid,row和column。

這四個函數之前的文章都有介紹,基本的用法都不是很難:

max是返回一組數字的最大值;

text是按照指定的格式顯示數據;

mid是根據指定位置提取字符串的內容;

row得到行號;

column得到列號。

可是當一些基礎的函數組合起來以後,往往就變得難以理解,這是今天的主要內容。

最後,對於較為複雜的公式,通常都是從最裡層的函數開始分析,本例中最外層的函數是max,text在第二層,mid在第三層,row和column共同作為mid函數的參數,也就是最內層函數。這是我們分析的順序,再就是要藉助f9功能鍵,對於計算過程進行解讀,了解每一個函數實現了什麼樣的效果。


下面進入正題,來解讀這個公式:

先看這部分:MID(A2,ROW($1:$10),COLUMN(A:H))

mid函數的基本含義是:mid(字符串,開始截取的位置,截取長度)

例子中開始截取的位置用到了row,截取長度用到了column;

ROW($1:$10)的結果是1到10的一個數組(10個數字),也就是說將一個字符串截取了10次,從第1個字到第10個字開始進行截取,為了便於理解,我們看看=MID(A2,ROW($1:$10),1)這個公式可以得到什麼內容:

記得是按三鍵(Ctrl、shift、enter),表面上只能看到一個字,實際上應該是10個字,我們按f9看看:

看到了嗎?將單元格的內容分解成了一個一個的字符,從第一個字開始提取一個字符、從第二個字開始提取一個字符……

與之類似,我們再看看

=MID(A2,1,COLUMN(A:H))可以得到什麼內容,這次我是直接按了f9顯示的:

這次結果變了,提取的位置固定,都是從第一個字開始,但是長度增加了。

對比兩個公式的結果,有個細節,使用row得到數據是用分號分隔的,而使用了column得到數據是用逗號分隔的。在數組的計算規則裡,分號和逗號是不同方向的數組(好比行是縱向,列是橫向),單獨存在的時候,看不出區別,但是發生計算的時候,就會有區別了。

現在我們來看看MID(A2,ROW($1:$10),COLUMN(A:H)這部分的結果吧:

這部分看起來是不是非常暈的感覺,其實數據還是非常規則的,注意第一個分號之前的內容,都是從第一個字開始,長度遞增提取的結果,然後就是從第二個字開始提取,長度遞增提取的結果……

這樣做的目的就是把單元格裡內容徹底拆分進行重新組合,把所有的組合都列出來了,在這些新組合的字符串裡,就有我們需要的數字:

好了,說了這么半天,MID(A2,ROW($1:$10),COLUMN(A:H))這部分不知道你看明白沒有,在這部分裡面我們需要注意兩點:

ROW($1:$10)這裡面的10,需要根據單元格的字符長度來調整,如果最長的內容是20個字,這裡的10就要改成20,為了保險起見,我們可以稍微寫大一點,但是不要太大,因為會影響計算速度。

COLUMN(A:H)這裡用的列號,看起來不如數字那麼明顯,能不能也用row呢?

試試看:

公式這樣寫好像也能得到結果,那麼我們f9看看到底都是些什麼數據:

少了很多啊,這是因為兩個數組都是row,方向一致,無法得到完整的組合結果(不同方向數組計算原理可以想想九九乘法表,行列相乘得到一個區域,如果同行或是同列相乘的話,得到的也是一行或者一列數據)。

所以這裡的column是不能用row替換的,明白了吧。

回到我們的問題,COLUMN(A:H)得到的是1到8的數組,在mid函數中的作用是提取內容的長度,所以如果a列數據中有長度超過8位的數字,這裡就要修改,在本例中不會有太長的數字,所以a:h足夠了。

囉嗦了這麼多,總算是把mid這部分理清楚了,就是對數據源的內容進行重新組合,得到一些新的數據,有帶漢字的,也有純數字的,還有空的,接下來就是text函數出手的時候了,將這些新組合的數據進行統一,為了便於閱讀,我將公式TEXT(MID(A2,ROW($1:$10),COLUMN(A:H)),"0.00;;0;!0")中的mid部分用「一組數據」代替,看起來也簡單了很多:TEXT(一組數據,"0.00;;0;!0")。

在text裡,重點是第二參數"0.00;;0;!0"的含義,在text裡,第二參數決定了內容的顯示方式,而用分號進行分段是非常重要的一種用法。

通常用三個分號把數據分成四類,「正數;負數;0;文本」,而對每類數據單獨指定格式,對照來看,"0.00;;0;!0"這裡的四個格式分別是:「0.00」、「」、「0」、和「!0"。怎麼理解呢?

如果第一參數是正數,就按保留兩位小數來顯示;如果是負數,就不顯示;如果是0,原樣顯示為0;如果是文本,則強制顯示為0,"!"在這裡是強制顯示的意思。

因為本例中不會出現負數,所以這裡的第二段實際上沒有起作用。如果以上解釋理解的話,我們再來看看之前用mid得到的那一堆數據,經過了text統一處理後變成了什麼樣的:

這段公式我們按f9看看結果:

可以看到,所有的字符串都變成了數字,只不過這些數字都是加了引號的,不是真正的數值,而是一些文本格式的數字,如果就這樣用max去取最大值的話,是無法得到正確結果的,所以在text前面加了兩個-,這是強行對文本數值進行計算從而實現了將文本數值轉為真正數值的目的。一個符號是負數,再一個負號是減法運算,真正實現計算的是減法運算,通常這種用法叫做」負負得正「,也可以用1*text,或者0+text都行,總之是用加減乘除這幾個運算來實現轉換。

到這裡,這個公式的分析就接近了尾聲,max裡面是通過了層層運算得到的一組數值(現在是真正的數值哦)

注意,數字都沒有引號了。

max自然就得到了最大的一個數,而這個數也就是我們需要提取的數據了。

相關焦點

  • Excel單元格內數字按從小到大的順序排序的公式分析!
    下面我來看下這個問題:這是今天群裡的一個素材,B1單元格中的數字正好是A1單元格中的數字按照從小到大的順序排列的。大家可以自己思考下該如何做,完全沒有思路的同學應該去好好學習下函數,包括數組公式。下面我講下思路:第一步:我們是不是應該把A1單元格中的數字打散,用MID函數在每個位置上提取一位數字出來,這樣就可以把數字打散。每個位置即是從1開始到A1中數字的長度,即1到6的位置,所以還得用ROW構造一個1到6的數組。
  • Excel提取數字函數,讓單元格數字站出來
    我們需要將單元格中的文本數字提取出來,但是文本中包含了:數字、字母、中文,並且都在同一單元格中,而我們只需要將數字提取出來,應該如何實現呢?下面給大家分享幾個提取數字函數的公式,相信可以用得到。提取文本左側數字在一個單元格中,數字是在左側,如何使用公式批量將數字提取出來呢?這裡用到left函數就能實現。
  • Excel公式技巧12: 從字符串中提取數字——將所有數字分別提取到不同的單元格
    ,本文研究從字符串中提取所有數字的技術:1.字符串由數字、字母和特殊字符組成2. 數字在字符串的任意地方3. 字符串中的小數也一樣提取3. 想要的結果是將所有數字返回獨立的單元格 例如,在單元格A1中的字符串:81;8.75>@5279@4.=45>A?
  • Excel單元格有文字和數字並存,提取統計妙招!
    Excel提取數字:  當你發現一個單元格裡有文字和數字並存的時候,想單獨提取裡面的文字或者數字時,是不是手工的複製再粘貼出來,或者用計算器一個一個的加減統計,甚是讓人頭疼,那樣又讓你返回到了遠古時代,做表格,不是畫畫表格線,篩選一些數據就是效率,就是懂EXCEL,有時候需要配合公式準確自動運算,達到自己想要的結果,才能讓你放開雙手,輕鬆的工作
  • 如何在Excel單元格中提取數字?幾個函數輕鬆幫你搞定!
    處理複雜的Excel表格時候,如何把單元格裡面複雜的數字給提取出來呢?是將單元格裡面的數字複製粘貼出來嗎?NO不是!
  • 教你如何在Excel單元格中提取數字,幾個函數輕鬆幫你搞定!
    處理複雜的Excel表格時候,如何把單元格裡面複雜的數字給提取出來呢?是將單元格裡面的數字複製粘貼出來嗎?NO不是!在這裡教大家幾個函數輕鬆幫你將單元格裡面的數字給全部提取出來,完全不費吹灰之力!1、如何提取單元格文本中數字代入函數公式:=MIDB(A2,SEARCHB("?",A2),2*LEN(A2)-LENB(A2))將函數代入到指定的單元格,即可提取A2單元格數字,前提要將函數的坐標對應好單元格呦!
  • 為什麼你不會寫函數嵌套公式?不是腦殼笨,而是不懂這個簡單方法
    今天,是時候解決這個難題了!很多使用函數的同學都會遇到一個問題,單個的函數都明白,但不會組合起來使用。這個問題反應到實際工作中就是問題能看懂,但是如果用一個函數搞不定,就不會寫公式了。其實這是每一個函數使用者都要經歷的必然階段。要順利通過這個階段只有一個辦法——自己多練、多想,掌握解決思路。
  • excel函數應用:如何用公式讓單元格內容定量重複
    ***解決這個問題大致上分為以下幾個步驟:第一步:提取數量如果你使用的是Excel2013及以上版本的話,這個就很容易,輸入第一個數字,回車後按Ctrl+E組合鍵就可以完成如果你的版本還沒有這個功能,也不用灰心,因為上圖中數字出現的位置還是比較有規律的,用公式提取也是完全可以的。
  • excel函數應用:如何用公式讓單元格內容定量重複
    ***解決這個問題大致上分為以下幾個步驟:第一步:提取數量如果你使用的是Excel2013及以上版本的話,這個就很容易,輸入第一個數字,回車後按Ctrl+E組合鍵就可以完成。如果你的版本還沒有這個功能,也不用灰心,因為上圖中數字出現的位置還是比較有規律的,用公式提取也是完全可以的。
  • Excel怎麼用公式把中英文單位前的數字提取出來
    筆者之前曾發文介紹過在Excel中怎麼用Ctrl+E鍵(也就是Excel的快速填充功能)提取數字,把單元格中的數字和中文單位分開。但較早版本的Excel沒有自動填充功能,不能使用Ctrl+E鍵提取數字。
  • Excel單元格中文本提取,想從哪開始提取就從哪,還是批量提取喲
    上節教程中從老闆發來的人員名單中,把每個單元格中第一個人的名字提取出來了(如下圖)。其實提取第一個名字是很簡單的,今天分享提取最後一個人的名字,相信你學會了這篇教程,其他位置的名字你也就會了。具體操作步驟:第一步:計算每個單元格中頓號的數量思路:上個教程中我們就發現,每個單元格中人員之間是用頓號(、)分開的,提取第一個時利用FIND()函數找到第一個頓號(、)即可,提取最後一名
  • Excel高手數字提取進階思路詳解!看到最後,我整個人都傻了!
    案例很簡單:提取其中的金額數值方法有很多,本篇的主題是使用公式的思路講解!1、這種從文本中提取數字。那麼我們第一步就要找到我們要提取數字開始的位置!2、怎麼找呢?數字0-9共10個,只有這10種情況,那麼我們就一個一個去查找這10個數字,找出10個數字首次出現的位置,然後獲取最小的就是開始的位置!
  • Excel單元格中的文本提取,想從哪開始提取就從哪,還是批量提取喲
    其實提取第一個名字是很簡單的,今天分享提取最後一個人的名字,相信你學會了這篇教程,其他位置的名字你也就會了。具體操作步驟:第一步:計算每個單元格中頓號的數量思路:上個教程中我們就發現,每個單元格中人員之間是用頓號(、)分開的,提取第一個時利用FIND()
  • excel提取技巧:單元格部分內容提取的三種方法
    操作要點:(1)在B2單元格輸入0402時,要先輸入一個單引號,或者把單元格修改為文本格式再輸入;(2)只輸入一個數據可能無法通過Ctrl+E得到正確結果,這時候連續輸入兩個數據就可以了。提示:組合鍵Ctrl+ E只能在Excel2013及以上的版本才能使用。
  • Excel必知:兩種從文本數字混合單元格提取數字和文本的標準方法
    一分鐘讓你學會從文本數字混合單元格提取數字和文本,這個方法應該能滿足大部分提取需求,如圖。 第一種方法操作步驟,在右邊相鄰單元格輸入要提取的數字,上圖是1,然後選中1及以下的空白單元格,滑鼠不動,按鍵盤上的ctrl+e組合鍵即可。
  • Excel怎麼快速提取混合單元格中的中文、英文、數字?
    Microsoft Excel快速提取混合單元格中的中文、英文、數字,雖然這個Microsoft Excel技巧聽起來很「高大上」,但是在實際辦公中很少會遇到中文、英文、數字「混合三打」的情況。俗話說得好,行走江湖技多不壓身,多一門技術,多一門吃飯的寶貝。廢話說的有些多了,接下來就直奔主題吧!
  • EXCEL中怎樣在混合數據單元格中快速提取英文、數字、中文?
    施老師:相信許多人經常會遇到一些不懂Excel的同事和老闆,將一份好好的資料在Excel中填寫的是亂七八糟,甚至有時在一個單元格中弄了N多個信息,又是中文,又是英文,又是數據。如果數據少的話可以手動一個一個的拎出來,如果數據多的話就麻煩了。
  • Excel單元格中提取漢字技巧,簡單實用!
    漢字全部在左邊,右邊是型號,利用漢字為雙字節,其他為單字節的特點,B2單元格公式為:=LEFT(A2,LENB(A2)-LEN(A2))  ② Excel中提取漢字快速填充法 對於不熟悉Excel函數的朋友來說,寫函數公式還是有點難度。
  • Excel數字提取技巧:從混合文本中提取數字的方法
    前面我們分享了不用函數公式提取數字的5種方法。今天我們分享用簡單公式從混合文本中提取數字的方法。因為採用的公式很簡單,所以總體來說只適合數字在文本中的位置有一定規律的情況。如果想用公式提取沒有位置規律的數字,那就得看我們下一篇教程。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
  • Excel單元格中批量提取最後一個人的名字
    別告訴我你也是鍵盤錄入的。問題分析:從上圖中看到的表格中每個單元格人數不一樣,而名字的文本個數也不一樣,看似比較雜亂,其實還是有規律的,每個單元格的第一個名字後面跟著一個頓號(、),找到這個規律我們就可以利用