2011-11-11 40 views
1

我想實現在Mac在Excel 2010中的正則表達式,但與任何公式和數據我得到的是#VALUE錯誤#VALUE錯誤的RegExp

這是我在一個模塊中實現:

Function RegExp1(ReplaceIn, ReplaceWhat As String, _ 
    ReplaceWith As String, Optional IgnoreCase As Boolean = False) 

    Dim re As Object 
    Set re = CreateObject("VBScript.RegExp") 
    re.IgnoreCase = IgnoreCase 
    re.Pattern = ReplaceWhat 
    re.Global = True 

    RegExp1 = re.Replace(ReplaceIn, ReplaceWith) 
End Function 

然後在單元格中我嘗試:

=RegExp1(D2,"(PR2001\.)(\d)","$100$2") 

所有這一切都在類似的細胞執行

PR2001.1 
PR2001.2 
PR2001.3 

etc ...我試圖在最後一個數字和句點之間加上零來格式化,以便於排序。任何幫助,將不勝感激

+1

就我所知,VBScript在Mac上不可用,所以這根本行不通。 FWIW你的代碼和例子在Windows上工作 –

回答

0

Excel X不支持VBScript,所以你將無法做到這一點。該函數的作品和表達很好,順便說一句。

我可以建議你寫一個函數使用InStrRev(實際上這是一個很好的解決方案,即使你可以使用正則表達式)。

Function AddZeros(ByVal text As String) As String 

Dim lastPeriod As Long 
lastPeriod = InStrRev(text, ".") 

If lastPeriod <> 0 Then 
    AddZeros = Left$(text, lastPeriod) & ("00" & Mid$(text, lastPeriod + 1)) 
Else 
    AddZeros = text 
End If 

End Function 
+0

謝謝,不能相信X不支持regEx。野蠻。 – on2valhalla

+0

確實很殘酷! :0 – aevanko