Question to say "I can!"

excel提取單元格中的數字

2014-02-26

excel單元格中經常是數字和字符混在一起,那么當我們需要從單元格中提取數字時,該用什么樣的方法呢?下面蘭色幻想就這個問題做一個總結,希望能給大家所有啟發和幫助。

1、數字在前。

如果字符串中數字在前,如A1單元格中字符為 56ABC,我們可以用下面的公式來提取。

=LOOKUP(9^9,--LEFT(C6,ROW(1:9)))

估計很多沒基礎的看不懂上面的公式,9^9是什么?后面row又是什么用法?這里簡單介紹一下吧。lookup函數可以查找到一組數中最后一個數字,那么我們就用left進行截取前1個,前2個,前3個..前9個,怎么實現這個,就是把left第二個參數設置成一個數組。row函數可以生成一個數字序列來完成這個任務。

2、數字在后

如果數字就不能用上面的方法了。我們可以查找最前的數字位置然后用MID函數提取。

=MID(C5,MIN(FIND(ROW(1:10)-1,C5&"0123456789")),9)

公式說明:使用find查找第一個數字的位置,row生成0~9的數字,后面之所以加上0~9,因為如果字符串中沒有某個數字,查找返回錯誤值,從而會讓整個公式產生錯誤。

3. 數字在中間

數字在中間是最難提取的,不能再用簡單的截取就能實現了。那怎么辦呢?我們可綜合一下兩種方法。

=LOOKUP(9^9,--LEFT(MID(C7,MIN(FIND(ROW(1:10)-1,C7&"0123456789")),10),ROW(1:9)))

當然,我們還可以用第二種方法的思路,求第一個數字,再計算第二個數字,然后再倒減出總的位數。那樣公式會比這個公式要復雜很多。

 

附:提取單元格A1中的中文:

數組公式
=MID(A1,MIN(IF(LENB(LEFT(A1,ROW(INDIRECT("1:"&LEN(A1)))))>LEN(LEFT(A1,ROW(INDIRECT("1:"&LEN(A1))))),ROW(INDIRECT("1:"&LEN(A1))),LEN(A1)+1)),LENB(A1)-LEN(A1))
作者:admin | Categories:軟件使用 | Tags:

發表評論

電子郵件地址不會被公開。 必填項已用*標注

*

澳洲f1赛车b盘开奖套路 国王vs网队比赛录像 辽宁彩票35选7 手游麻将怎么打伙牌 nba湖人vs凯尔特人 麻将游戏规则简单介绍 国内p2p理财平台跑路 河北11选5今天开 国王vs独行侠 教你炒股票 极速11选5送彩金 有坂深雪作品集2019 新浪财经 上证指数 幸运龙宝贝 四川麻将血战到作弊器 麻生希女教师在线观看 配资门户