2014-01-13 30 views
4

我需要刪除單元格中的所有數字,然後將這兩個數字分成兩個單元格,並將其格式化爲數字,而不是文本。該單元格中包含文本/數字的格式如下:使用VBA刪除數字周圍的文本

between 150,000 and 159,999 per annum 
between 60 and 65 per hour 
between 70.00 and 74.00 per hour 

屏幕SHOT1(前):

有可能是這些其他線路1000,他們將永遠啓動H2。有任何一方被佔用的單元格。

如果可能的話,代碼需要形成一個更大的宏的一部分,前後都有動作,所以能夠將它複製並粘貼到中間是非常好的。

所需的結果(後):

下面是因爲我不知道怎麼在這裏上傳的樣本文件連結 - http://www.filedropper.com/sample_13

+2

很高興看到OP.Close vote迴應。 – brettdj

回答

2

請執行下列步驟:

  1. 手動添加列之間H &我應該是空的在開始。
  2. 此功能添加到您的VBA項目:

    Public Function GetNthNumberAlternative(sMark As String, iOrder As Integer) As String 
    
    'regexp declaration 
    Dim objRegExp As Object 
    Set objRegExp = CreateObject("vbscript.regexp") 
    
    With objRegExp 
        .Global = True 
        .Pattern = "\d+[.,]\d+|\d+" 
         GetNthNumberAlternative = .Execute(sMark)(iOrder - 1).Value 
    
    End With 
    
    End Function 
    
  3. 這個子程序添加到您的VBA項目:

    Sub Run_Function() 
    
    Dim Cell As Range, tmpText As String 
    For Each Cell In Selection.Cells 
        tmpText = Cell.Value 
        Cell = GetNthNumberAlternative(tmpText, 1) 
        Cell.Offset(0, 1) = GetNthNumberAlternative(tmpText, 2) 
    Next Cell 
    End Sub 
    
  4. 要處理的細胞在H列的選擇範圍(TIP :在開始時選擇2-3來理解該想法)

  5. 運行Run_Function()子程序...

嘗試&經過測試以獲得您提供的樣品數據!

+4

對不起,我是新來的論壇和道歉,我沒有花費足夠的時間閱讀規則。我花了一些時間創建自己的解決方案,這是一個文本到列的方法,然後刪除不需要的列。我一定會在將來通過解釋我所嘗試的內容來堅持論壇規則。再次抱歉。 KazJaw,非常感謝您的解決方案! – stevieb123