2016-08-01 52 views
1

私はMicrosoft Access 2010で作業していますが、テーブルと列[tblData]![Associate Name]のデータはSmith、John(123456)のようにフォーマットされています。明らかに、これは姓、名、従業員ID番号(5桁から6桁まで)を示しています。私の問題は、この文字列から従業員ID番号を抽出する必要があり、私は機能を持つLeft,RightMidの正しい組み合わせを使用するのに苦労しているということです。文字列2文字間の文字列の抽出

+1

は、なぜあなたはすべてで、このようなデータを格納していますか?これは本質的には計算された列であり、これは悪い設計です。 –

+0

残念ながら、これは私のデータではありません。私はちょうどそれを笑を操作するように依頼されました –

答えて

4

InStr()を使用して(文字の位置を確認します。

(

後に1つの文字を開始ストリングを抽出するために使用Mid()そしてVal()はあなたの残りの桁からの数を与えます。最後の数字の後には何も無視します。

結果を数値ではなく文字列にする場合は、CStr()を使用して変換します。ここで

は、イミディエイトウィンドウからの例です:

Associate_Name = "Smith, John (123456)" 
? InStr(1, Associate_Name, "(") 
13 
? Mid(Associate_Name, InStr(1, Associate_Name, "(")) 
(123456) 
? Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1) 
123456) 
? Val(Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1)) 
123456 
? CStr(Val(Mid(Associate_Name, InStr(1, Associate_Name, "(") + 1))) 
123456 
+0

[OnlyDigits()](http://stackoverflow.com/a/12570564/77335)あなたの状況に役立つかどうかを参照してください。 – HansUp

+0

このようなことをするときに、スループロセスが何であるかについて非常に意味を成している。あなたの時間をありがとう! –

+0

はい、私は、コード例が私の言葉よりもそれをより良く説明すると思いました。 :-) どういたしまして。 – HansUp

関連する問題