2017-06-08 33 views
0

在Excel或VBA中,是否有方法通過其字符過濾單元格,然後將其插入單獨的列中?關閉列中的所有非數字值

例如,我的數據是這樣的:

A3200,12 
AB2000,32 
-300,34 
32567,32A 
6745,21AB 
500+ 

而且我要的結果是這樣的:

Column A 
3200,12 
2000,23 
300,34 
32567,32 
6745,21 
500 

Column B 
A 
AB 
- 
A 
AB 
+ 

那麼,有沒有辦法去thorugh每個單元並切斷所有非數字值出來這些並將它們複製到另一列?

+0

請參閱[鏈接](https://www.techonthenet.com/excel/formulas/isnumeric.php) – MiguelH

回答

1

一種方法是創建UDF(用戶差異函數)。

地點2個以下功能爲VBA模塊:

Function Digits(s As String) As String 
    With CreateObject("vbscript.regexp") 
     .Pattern = "[^0-9,]" 
     .Global = True 
     Digits = .Replace(s, "") 
    End With 
End Function 

Function NonDigits(s As String) As String 
    With CreateObject("vbscript.regexp") 
     .Pattern = "[0-9,]" 
     .Global = True 
     NonDigits = .Replace(s, "") 
    End With 
End Function 

要使用這些函數:如果數據是在單元格A1,只是在電池B1

=Digits(A1) 

和在小區C1中鍵入式:

=NonDigits(A1) 

第一個會將您的數據作爲僅包含數字的文本返回。要將其轉換爲數字,請使用VALUE函數。

第二個返回沒有任何數字的數據。

+0

非常感謝!這像一個魅力。我唯一的問題是,使用「= Digits()」時,函數也會刪除逗號並使用「= NonDigits()」來保留它們。有沒有可能改變這種情況? –

+0

修好了。如果您有任何負數,請小心減號。 – RADO

+0

對不起,延遲迴復。謝謝!這工作得很好!有沒有一個地方可以閱讀關於UDF的內容?因爲,我其實不太瞭解這個函數如何提交給定的結果。問候 –