問題: 如何提取字母數字的字串中數字部分?
解決方案
此解決方案的基本原理是搜索並返回字母數位字串中的第一個數位,然後只返回其後的數字。
演算法
此解決方案包括創建公式以完成下列任務:
1.將字母數位字串分解為單獨的字元。
2.確定分解後的字串中是否有數位。
3.確定數位在字母數位字串中的位置。
4.計算字母數位字串中數位的數量。
我們將分別考慮這些任務,然後將各公式整合在一起以得到最終結果。
將字母數位字串分解為單獨的字元
請在此使用 MID 函數。MID 可以根據所指定的字元的數量,從所指定的位置開始,從文本字串中返回特定數量的字元。
此函數的語法是:
MID(text,start_num,num_chars)
Text 文本字串包含的是要提取的字元。
Start_num 要從文本中提取的第一個字串的位置。文本中第一個字元佔據 start_num 1,以此類推。
Num_chars 指定要 MID 從文本中返回的字元數量。
對於我們的示例,公式為:=MID(A1,ROW($1:$9),1) 此公式可以分解字母數位字串,並且實際上會將字元置於工作表的不同行內。例如,對於字母數位字串 abc123,其所有 6 個字元都將被分開。
注釋
可將數值 9 適當增大為任何更大的數值,以適應更長的字串。在此示例中,最大字串長度為 9。 值得一提的是,字串分解之後,“1”、“2”和“3”將被看作文本而不是數位。要將存儲為文本的數位轉換成數位,請用 1 乘以此公式,例如:=1*MID(A1,ROW($1:$9),1) 確定分解後的字串中是否有數位 在此我們將使用 ISNUMBER 函數,此函數可以確定字母數位字串中是否有數位。公式現在變成了: =ISNUMBER(1*MID(A1,ROW($1:$9),1))
如果字串中有數位,則結果將為 TRUE,否則結果將為 FALSE。
確定數位在字母數位字串中的位置。
現在我們將通過在上一段中提到的分解後的字串的結果中查找 TRUE 值來確定數位的位置。
在此我們將使用 MATCH 函數。經過修改的公式現在變為:=MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0)
要點
必須通過按 Ctrl+Shift+Enter 將此公式作為陣列進行輸入。
如果字串是 abc123,則此公式產生的結果將是 4,這就是字母數位字串中第一個數位字元的位置。
計算字母數位字串中數位的數量
現在的任務是計算字串中數位的數量,以確定返回字母數位字串中第一個數位之後要返回的字元。
如上所述,可通過用 1 與其相乘,將字母數位字串中存儲為文本的數位轉換成數位。例如, =1*MID(A1,ROW($1:$9),1)
將存儲為文本的數位轉換成數位之後,可以通過使用 COUNT 函數對其進行計數。可通過輸入以下公式計算數位的數量:=COUNT(1*MID(A1,ROW($1:$9),1))
整合各公式
現在我們將使用 MID 函數把此公式的各部分整合在一起,如以下示例所示。 =MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0),COUNT(1*MID(A1,ROW($1:$9),1)))
從本質上說,此問題可陳述為:確定第一個數位在字母數位字串(在儲存格 A1 中)中的位置。返回此數位及其後的數位。
要將得到的字元轉換成數位,請用 1 乘此公式。雖然對此並不嚴格要求,但如果要對結果執行數學運算,則應該如此操作。
下面是要輸入儲存格 B1 中的最終公式: =1*MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($1:$9),1)),0),COUNT(1*MID(A1,ROW($1:$9),1)))
要點
必須通過按 Ctrl+Shift+Enter 將這些公式作為陣列進行輸入。
在此值得一提的是,如果字串是 yur09875reew,而且您使用的是已乘 1 的公式,則列 B 中的結果將是 9875 而不是 09875。因為 0*1=0,所以 0 被忽略了,返回的結果是 9875。如果想得到結果 09875,則不要用 1 乘以整個公式。
沒有留言:
張貼留言