2017-06-08 6 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

[link](https://www.techonthenet.com/excel/formulas/isnumeric.php) – MiguelH

答えて

1

UDF(User-Difined Function)を作成する方法の1つです。 VBAモジュールに

場所2つの以下の機能を:

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にある場合は、ちょうど

=Digits(A1) 

とセルC1のセルB1に数式を入力します:

=NonDigits(A1) 

最初は、数字だけを含むテキストとしてデータを返します。数値に変換するには、VALUE関数を使用します。

秒は、桁のないデータを返します。

+0

ありがとうございました!これは魅力のように機能します。私の唯一の問題は、 "= Digits()"を指定すると、カンマが削除され、 "NonDigits()"が削除されているということです。それを変える可能性はありますか? –

+0

を修正しました。マイナス記号がある場合は、マイナス記号に注意してください。 – RADO

+0

遅く返事を申し訳ありません。ありがとうございました!これはとてもうまくいった!私はUDFについて何か読むことができる場所はありますか?実際、この関数がどのように与えられた結果をどのように提出するのか、私は実際には分かりません。ご挨拶 –

関連する問題