2009-05-29 15 views

答えて

2

フォーマットについては、 '(アポストロフィ)&の前の文字列を見つけてください。 この値を持つセルにいると仮定して、次のVBAコードを使用します。

activecell.text = mid(activecell.text, 1, instr(1, activecell.Text, "'")-1)

それはアポストロフィを探し、それ&は現在のセルにそれを置く前に、文字を抽出します。

+0

アポストロフィの前の数字が2の代わりに2000または200の場合はどうなりますか?ミドルファンクションの2番目のパラメータを返す文字数をより柔軟にするにはどうすればよいですか? – stanigator

+0

そのような場合は問題ではありません。コードはアポストロフィを探し、最初の文字から始まるすべての文字を返します。 – shahkalpesh

+0

ありがとうございます。私はそれをとにかく使って見つけました。 – stanigator

0

数値データが常にセルの先頭にあると仮定すると、Regexを使用して文字列の先頭に連続する数字を見つけ、最初の数値以外の文字にヒットすると停止します。ここでは、あなたのためにそれを行う関数です、私はそれが助けてくれることを願っています。 ^はセルの開始を表し、(\ d +)は1つ以上の数字を意味し、。*は0以上の文字が続くことを意味します。私は、あなたが必要とする数字の文字列が1つしかないと仮定しているので、正規表現はサブマッチ0(最初のマッチ)を返します。

Function ExtractNumericData(ByVal text As String) As String 

Application.ScreenUpdating = False 
Dim allMatches As Object 
Dim RE As Object 
Set RE = CreateObject("vbscript.regexp") 

RE.Pattern = "^(\d+).*" 
RE.Global = True 
Set allMatches = RE.Execute(text) 
ExtractNumericData = allMatches.Item(0).submatches.Item(0) 
Application.ScreenUpdating = True 

End Function