私信回複關鍵詞【福利】,獲取豐富辦公資源,助你高效辦公早下班!
大家好鴨,我是秋葉 Excel 學習班裡,沉迷于學習 Excel 的小爽~
最近啊,我有了一個小粉絲——遠歌同學(插會兒腰)。
某天我在玩電腦的時候,微信突然叮~ 了兩聲,仔細一看,原來是可愛滴遠歌:
應遠歌的求助,今天我就來給大家簡單介紹一下——利用函數,快速提取單元格中的數字!
老規矩,練習文件放文末啦,記得看到最後領取~
01數字與漢字
◆ 數字與漢字之間有分隔符 ◆
【Ctrl E】&分列的方法大家都很熟悉啦,這裡就不再贅述~
這裡我們還可以使用 find 函數查找分隔符。
在 C2 單元格輸入公式如下,最後下拉填充就搞定啦。
=LEFT(B2,FIND("-",B2)-1)
小解析:
利用 find 函數找到分隔符所在的位置,再用 left 函數從左邊開始提取數字。
◆ 數字與漢字之間沒有分隔符 ◆
❶ 數字在漢字左側。
和上文一樣,也可以用快捷鍵【Ctrl E】進行分列。
我們還可以借助 lenb len 函數,獲取位置信息、提取數字。
如下圖中,len 函數将英文作為 1 個字節,而 lenb 函數将漢字作為 2 個字節。
因此,我們在 F2 單元格中輸入以下公式,下拉填充即可:
=LEFT(E2,LEN(E2)*2-LENB(E2))
小解析:
LEN(E2)*2-LENB(E2) 就是獲取左邊數字的個數,搭配 left 函數截取左邊的數字。
❷ 數字在漢字右側。
當數字在漢字右邊時,我們可以用函數 len lenb mid。
輸入公式如下:
=MID(H2,LENB(H2)-LEN(H2) 1,99)
小解析:
LENB(H2)-LEN(H2)主要是獲得左邊文本的個數,加上 1 後就是首個數字出現的位數。
從首個位置開始截取到 99 位(具體提取的位數隻要大于等于數字的最大位數即可)。
❷ 數字在漢字中間。
需要利用 lookup 函數配合數組公式來做。
公式如下:
=-LOOKUP(1,-MIDB(K2,SEARCHB("?",K2),ROW($1:$15)))
小解析:
這裡是利用 SEARCHB 函數的通配符查找功能,查找字符串中的數字。
由于公式是一個數組公式,需要按【Ctrl+Shift+Enter】進行數組運算。
02數字與字母漢字混合
一旦涉及到數字,字母和漢字一起混合的情況,我們就需要使用複雜數組公式了。
數組公式需要按住進行執行數組運算,公式左右兩側會出現大括号;
如果你是最新的預覽版 Office 365,直接按 Enter 就可以。
◆ 提取字符串在左右側的連續數字 ◆
❶ 數字在最右側。
=-LOOKUP(1,-RIGHT(O2,ROW($1:$15)))
❷ 數字在最左側。
=-LOOKUP(1,-LEFT(R2,ROW($1:$15)))
小解析:
首先使用 right 函數,從右到左分别截取長度為 1 到 15 的子字符串,再利用取負運算,将文本轉換為錯誤值,将數值轉換為負數;
然後利用 lookup 函數獲取數組的最後一個值,最後将負數取負轉為正數。
從左側提取的數字原理,跟從右側提取的原理相同。
◆ 數字在任意位置 ◆
❶ 借助 lookup 函數。
=-LOOKUP(0,-MID(K2,MIN(FIND(ROW($1:$10)-1,K2&1/17)),ROW($1:$15)))
小解析:
❶ 首先利用 ROW 函數構造 0-9 的數字數組:
ROW($1:$10)-1
❷ 「1/17」等于 0.0588235294117647,它是一個包含 0-9 所有數字的值,連接在文本的尾部是避免 FIND 函數在查找數字時,因文本缺少相應數字而返回錯誤值。
❸ 用 FIND 函數查找 10 個數字在文本中的位置,利用 MIN 函數返回文本中出現數字的最小位置,即可以得到首個數字的位置。
❹ 利用 MID 函數從首個數字位置開始,依次向右截取長度為 1~15 的 15 個子字符串,加上負号,将數字轉化為負數,文本轉化為錯誤值。
最後利用 LOOKUP 函數返回最大的數字,再使用負号将負數轉化為正數。
❷ 借助 max 函數(隻能提取整數)。
公式如下:
=MAX(IFERROR(--RIGHT(LEFT(K20,ROW($1:$13)),COLUMN($A:$D)),0))
小解析:
❶ 先用 len 函數确定字符串中最長的個數。
row(1:13)——13 這個數隻要大于字符串中最長的個數即可,目的是是後面一個個子字符的截取。
❷ LEFT(K20,ROW($1:$13) ——從首個字符開始依次從右截取 1~13 個子字符串。
❸ column(a:d)——a:d 取決于字符串中數字的最大位數。
❹ RIGHT(LEFT(K20,ROW($1:$13)),COLUMN($A:$D)——從左開始向右依次截取 1~13 個子字符,再從此數組的基礎上從右開始依次向左截取 1~4 個子字符,此時是一個 13*4 的數組。
❺ 公式前加--,是為了将文本轉為錯誤值。
❻ 将錯誤值轉換為 0,從數組選出最大值,即可獲得最大數字。
哔哩吧啦講了一段,我問遠歌:
關于提取單元格中的數字,你一般是怎麼做的?歡迎在留言一起交流~
私信回複關鍵詞【福利】,獲取豐富辦公資源,助你高效辦公早下班!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!