香港新浪網 MySinaBlog
« 上一篇 | 下一篇 »
Emily | 28th May 2006, 18:58 PM | General | (2045 Reads)

怎樣從字串裏提取想要的數字串

ExcelHome  問題

cells(1,1)="C:Documents and SettingsMatthewMy Documents測評周報20060508-20060514滿意度統計5.8-5.14"

選出  "滿意度統計5.8-5.14" 的 5.8-5.14

使用 vbscript.regexp 的例子

Function FilterStr(AnyVal As String)
    Dim RegEx
    Set RegEx = CreateObject("vbscript.regexp")
    RegEx.Global = True
    RegEx.Pattern = "[^d-.]+"
    FilterStr = RegEx.Replace(AnyVal, "")
    Set RegEx = Nothing
End Function
  
Sub Test()
Dim TempStr As String
TempArr = Split(Range("A1"), "")
TempStr = TempArr(UBound(TempArr))
MsgBox FilterStr(TempStr)
End Sub
 
mySinaBlog 不支援斜線,斜線現用全形\取代 ,請改回。
  

[3] Re: David
David : OK. 目前問題以 RegEx.Pattern = "[^A-Z]+" 解掉了, 非常感謝^^但假如是 str = ABC123.1DEF而我想拆成 ABC 與 123.1DEF, 這要如何處理呢 ? 謝謝 (這是上封欲用InStr 的狀況)


Sub Test()

TempStr = Cells(6, 4)
Len_Str = Len(TempStr)
NumericPos = FirstNum(Cells(6, 4))
MsgBox Left(TempStr, NumericPos - 1) & vbCrLf & Right(TempStr, Len_Str - NumericPos + 1)

End Sub


Function FirstNum(Cell As Range)
   For FirstNum = 1 To Len(Cell.Value)
      If Mid(Cell.Value, FirstNum, 1) Like "[0-9]" Then Exit For
   Next FirstNum
End Function


[引用] | 作者 Emily | 24th Jul 2009 12:32 PM | [舉報垃圾留言]

[2]

OK. 目前問題以 RegEx.Pattern = "[^A-Z]+" 解掉了, 非常感謝^^

但假如是 str = ABC123.1DEF
而我想拆成 ABC 與 123.1DEF, 這要如何處理呢 ? 謝謝 (這是上封欲用InStr 的狀況)


[引用] | 作者 David | 23rd Jul 2009 11:20 AM | [舉報垃圾留言]

[1]

您好, 您的這範例蠻符合晚輩的需求, 但仍有些許問題想請教...

Ex : str = ABC123.1
您的程式可取出123.1
我可以同時取出ABC (字串字母數不固定, 後面的數字部份也不固定)

InStr 無法使用 regex ? 原想用InStr 取出數字所在字元數, 再用left, right 函數切分出前後字串...

謝謝.


[引用] | 作者 David | 23rd Jul 2009 10:59 AM | [舉報垃圾留言]