首页
/
每日頭條
/
生活
/
提取數字後7位的公式
提取數字後7位的公式
更新时间:2024-04-28 14:22:46

經常在群裡或者公衆号見有人問,在一串文字中提取數字的辦法,那麼筆者總結了一下,在文字中數字的位置無非分三種情況:在頭部、中間及最後面,那麼我們下來分别介紹一下用法:

  1、數字在前面的數字與漢字的分離:

   B2輸入公式:=-LOOKUP(9E 307,-LEFT(A2,ROW($1:$10)))

   C2輸入公式:=RIGHT(A2,LEN(A2)-LEN(B2))

提取數字後7位的公式(你要的最全的數字提取公式來了)1

其中:Lookup的作用是查找小于或者等于他第一參數的數值;

      9E 307是傳說中Excel能支持的最大的數值,可以直接輸入9e307會自動轉換;

row($1:$10)的作用就是生成序列1-10;

left分别提取1-10個數字,然後用減号強制轉換成了數值;

     最後用Len來判斷字符串長度,達到分離出漢字的目的;

 因為在取數字的時候,用了負号進行強制轉換數字,所以在結果再加一個負号,将提取到的數值轉換一下正負;這樣做的目的就是能同時提取正負數。

2、數字在後面的數字與漢字分離,其實原理是一樣的,看下面的案例:

   B2輸入公式:=-LOOKUP(9E 307,-RIGHT(A2,ROW($1:$10)))

   C2輸入公式:=LEFT(A2,LEN(A2)-LEN(B2))

提取數字後7位的公式(你要的最全的數字提取公式來了)2

所有的意義其實都差不多,隻是将LEFT換成了Right而已。

   3、數字在字符串的中間,怎樣提取數值(這種方式,一般隻針對提取正數): 

提取數字後7位的公式(你要的最全的數字提取公式來了)3

公式為:=-LOOKUP(0,-MID(A1,MIN(FIND(ROW($1:$10)-1,A1&1/17)),ROW($1:$10)))

這是一個數組公式,需要按CTRL SHIFT ENTER結束公式的錄入。

  其中:LOOKUP的作用如上面的一樣;

     ROW($1:$10)-1的目的就是生成0-9這十個數字;

Find的作用就是分别找0-9這十個數字,在此字符串出現的位置;

Min的作用就是将FIND找到的十個位置,取最小值,也就是第一次出現的地方;

因為FIND函數查找不到的時候,會顯示錯誤值,而我們也沒有辦法保證0-9這10個數字全部在字符串中出現,所以在查找位置會&1/17這麼一個奇怪的表達式,是因為1/17會産生一個無限不循環小數,這個小數裡面會包含0-9這10個數字(另外1/19也會達到同樣的效果,不要問我為什麼會知道,這完全是試出來的)。我們看看:

提取數字後7位的公式(你要的最全的數字提取公式來了)4

  當然,想任意提取各種數字、文字、字母的組合,隻要有規則的話,都是能做到的,最好的辦法就是通過VBA調用正則表達式來實現。對于一般的用戶而言,上面三種辦法已經完全能達到我們想要的了。

  大家若有其他好的辦法,也是可以留言告訴我的喲。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved