国产一区二区欧美精品免费-欧美国产日韩在线视频-欧美亚洲国语精品一区二区-欧美激情五月综合啪啪-国产69精品麻豆久久久久-亚洲人成精品久久久久桥网站-欧美刺激肥熟在线视频-十七岁日本免费完整版BD-黑夜在线拖拽不卡第一页

`
閱: 3820 | 回: 0
發(fā)表于2015/10/25 13:37:40 樓主 
頭像 等級(jí):初學(xué)者
積分:0
財(cái)富值:0.00
身份:普通用戶

如果Excel單元格中包含一個(gè)混合文本和數(shù)字的字符串,要提取其中的數(shù)字,通常可以用下面的公式,例如字符串“隆平高科000998”在A1單元格中,在B1中輸入數(shù)組公式:
    =MID(A1,MATCH(1,--ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),0),COUNT(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))
    公式輸入完畢按Ctrl+Shift+Enter結(jié)束,公式返回文本形式的數(shù)值“000998”。下面的公式也可以提取字符串中的數(shù)值,并返回?cái)?shù)值形式:
    =LOOKUP(9E+307,--MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890)),ROW(INDIRECT("1:"&LEN(A1)))))
    公式返回“998”。
    上述兩個(gè)公式適合于字符串中包含連續(xù)數(shù)字的情況。但有時(shí)字符串中可能包含多個(gè)被文本分隔的數(shù)字,如“世紀(jì)家園31棟3單元901室”中就包含了3個(gè)數(shù)值,用上面的第二個(gè)公式只能返回第一個(gè)數(shù)值“31”,而第一個(gè)公式不能得到正確的結(jié)果。要分別提取字符串中的各個(gè)數(shù)值,可以用下面的自定義函數(shù)。
    在Excel中按Alt+F11,打開(kāi)VBA編輯器。單擊菜單“插入→模塊”,在代碼窗口中輸入下列代碼:
Function GetNums(rCell As Range, num As Integer) As String
   Dim Arr1() As String, Arr2() As String
   Dim chr As String, Str As String
   Dim i As Integer, j As Integer
   On Error GoTo line1
   
   Str = rCell.Text
   For i = 1 To Len(Str)
     chr = Mid(Str, i, 1)
     If (Asc(chr) < 48 Or Asc(chr) > 57) Then
        Str = Replace(Str, chr, " ")
     End If
   Next
   
   Arr1 = Split(Trim(Str))
   ReDim Arr2(UBound(Arr1))
   For i = 0 To UBound(Arr1)
   If Arr1(i) <> "" Then
     Arr2(j) = Arr1(i)
     j = j + 1
   End If
   Next
   
   GetNums = IIf(num <= j, Arr2(num - 1), "")
line1:
End Function
    該自定義函數(shù)定義了兩個(gè)參數(shù),第一個(gè)參數(shù)指定字符串所在的單元格,第二個(gè)參數(shù)指定提取字符串中的第幾個(gè)數(shù)值。如果字符串中僅包含2個(gè)數(shù)值,而第二個(gè)參數(shù)大于2,則函數(shù)會(huì)返回空。
    返回Excel工作表界面。假如上述字符串在A2單元格中,在B2中輸入:
    =Getnums(A2,1)
    公式將以文本形式返回字符串中的第一個(gè)數(shù)值。要得到字符串中的第N個(gè)數(shù)值,將公式中的第二個(gè)參數(shù)“1”替換為N即可,如下圖D2中的公式:
    =Getnums(A2,3)
    返回“901”。
用說(shuō)明:該自定義函數(shù)在處理小數(shù)形式的數(shù)值時(shí),將小數(shù)點(diǎn)“.”也視為字符,因而對(duì)于小數(shù)可分別提取小數(shù)的整數(shù)部分和小數(shù)部分。

1、數(shù)字在前。
     如果字符串中數(shù)字在前,如A1單元格中字符為 56ABC,我們可以用下面的公式來(lái)提取。
     =LOOKUP(9^9,--LEFT(a1,ROW($1:$9))) 數(shù)組
     估計(jì)很多沒(méi)基礎(chǔ)的看不懂上面的公式,9^9是什么?后面row又是什么用法?這里簡(jiǎn)單介紹一下吧。lookup函數(shù)可以查找到一組數(shù)中最后一個(gè)數(shù)字,那么我們就用left進(jìn)行截取前1個(gè),前2個(gè),前3個(gè)..前9個(gè),怎么實(shí)現(xiàn)這個(gè),就是把left第二個(gè)參數(shù)設(shè)置成一個(gè)數(shù)組。row函數(shù)可以生成一個(gè)數(shù)字序列來(lái)完成這個(gè)任務(wù)。
   2、數(shù)字在后
       如果數(shù)字就不能用上面的方法了。我們可以查找最前的數(shù)字位置然后用MID函數(shù)提取。
    =MID(A1,MIN(FIND(ROW($1:$10)-1,A1&"0123456789")),9)數(shù)組
     公式說(shuō)明:使用find查找第一個(gè)數(shù)字的位置,row生成0~9的數(shù)字,后面之所以加上0~9,因?yàn)槿绻址袥](méi)有某個(gè)數(shù)字,查找返回錯(cuò)誤值,從而會(huì)讓整個(gè)公式產(chǎn)生錯(cuò)誤。
   3 數(shù)字在中間
     數(shù)字在中間是最難提取的,不能再用簡(jiǎn)單的截取就能實(shí)現(xiàn)了。那怎么辦呢?我們可綜合一下兩種方法。
    =LOOKUP(9^9,--LEFT(MID(A1,MIN(FIND(ROW($1:$10)-1,A1&"0123456789")),10),ROW($1:$9)))數(shù)組


我的個(gè)性簽名

快速回復(fù)

目前不允許游客發(fā)表,請(qǐng) 登錄 注冊(cè) 后再發(fā)貼。