圖片中,B列(標紅字元)包含某些關鍵字(C1:H1就是 關鍵字),它後面都有一串數字,現在需要將這些數字提取出來,知道規則就好辦了,提取的方法有很多。
這裡就拿 Find、Len、Middle,Replac和 IfError 這五個函式來巢狀解決吧。
先來簡單認識一下這5個函式
Find 函式,將某個字元在另一個字串中的位置給它找出來,什麼意思呢?還是來寫個例子來看吧
=FIND("土豆","今天土豆賣了15塊錢") 返回結果是3
意思是把 “土豆”在字串 “今天土豆賣了15塊錢” 中的什麼位置給算出來,所以結果是3,還是放單元格中看一下結果吧!
Len函式,返回字元數(字元長度),繼續剛才的例子
=LEN("今天土豆賣了15塊錢") 返回結果是10
因為是直接使用的字串,所以兩邊的雙引號是不能算進去的,趕緊放單元格測試吧!
Mid 函式,從字串中指定位置開始,擷取指定長度的字元,什麼意思呢,來看一個簡單例子
=MID("今天土豆賣了15塊錢",3,2) 返回結果是土豆
意思是從 “今天土豆賣了15塊錢”這個字串裡的第3個字元開始,擷取2個字元出來,所以結果是土豆,把它複製到單元格里測試一下吧!
Replace函式,將字串中從指定位置開始,指定長度的內容替換為新內容,測試公式
=REPLACE("今天土豆賣了15塊錢",1,2,"") 返回結果是 土豆賣了15塊錢
從第一個字元開始,連續2個字元,替換為空,所以得出了此結果,趕緊放單元格測試吧!
IfError函式,將錯誤值處理成需要的新值,來做小測試,認識一下
=IFERROR("今天土豆賣了15塊錢"+1,"土豆好笨") 返回結果是 土豆好笨
因為字串無法做四則運算,所以這個計算式會返回錯誤,因此會返回 土豆好笨,堅持繼續在單元格里測試一下吧!
好啦,函式的基本功能都有了瞭解以後,就可以開始解題了!
既然要根據C1:H1的內容來提取,那我們就要先查詢一下這些關鍵字在B列中的位置,這就要用到Find函式,來看一下公式圖吧,圖02
寫好以後,記得驗證一下位置對不對喲,右拉下拉填充好以後我們發現有錯誤值,那是因為這些關鍵字在B列不存在,這裡先不管它,最後再用iferror函式來處理。
既然是擷取,那就要計算出從第幾個字元開始擷取對吧,顯然這裡的1,14,26 並不能直接使用,因這它只找出來關鍵字所在位置,要從這個位置開始,加上關鍵字長度,再加個1(關鍵字後面都有個逗號)才是我們所需要數字的開始位置,
瞭解清楚這一點後,我們再給它加個Len函式計算一下,就可以了,來看公式圖03
這樣計算出來的 8,21,33,是不是剛好就是這些關鍵字所需數字的開始位置了呢?(怎麼會這麼巧??)
開始位置拿到以後,就可以擷取資料啦,因為關鍵字後面數字長度不一樣,為了降低挑戰難度,這裡先大致擷取一段出來再說,來看擷取公式圖04
到這裡你可能會問Mid的引數3為什麼是7?因為我大致看了一下數值大小不會破百萬,所以這裡用7足夠了。
從目前的結果來看,裡面還有很多我們不需要的內容,這時候有同學會說,我可以複製貼上為值,然後再查詢替換,其實這也是很方便快捷的方法,不過今天是函式的戲,那就用得讓函式演到底了。
這一次公式就變老長了,不要怕,在寫之前,先複製一下,然後再寫,對應的位置直接貼上公式就好了,
為什麼Replace的引數3要用9呢?其實我們前面只截取了7個字元出來,按最少一個數字來算,那後面最多隻有6個字元是需要處理掉的,9比6大保證不會有遺漏。(你也可以用99,999反正不是錢,隨便你用)
接下來就是處理錯誤值啦,把錯誤值處理面空值,直接套個Iferror函式在外面就行了,看圖5
擔心有同學會抄錯,我這裡把最終公式直接貼出來,你們可以貼上進驗證一下
=IFERROR(REPLACE(MID($B2,FIND(C$1,$B2)+LEN(C$1)+1,7),FIND(",",MID($B2,FIND(C$1,$B2)+LEN(C$1)+1,7)),19,""),"")
最後再放一張公式字元數相對少些的公式圖出來,圖6
此公式有對截取出來的字元長度要求比較嚴格,使用起來要特別注意下!
有沒有發現,其實函式巢狀並不難,分段來寫,一步步實現了再放到對應的引數中就可以了!