2016-08-01 125 views
1

我在Microsoft Access 2010中工作,我有一個表格和列[tblData]![關聯名稱]與數據格式如史密斯,約翰(123456)。顯然,這顯示姓氏,名字和員工ID號碼(可以在5到6位數字之間變化)。我的問題是,我需要從該字符串中提取員工ID號,並且我正努力使用Left,Right,MidInStr函數的正確組合。兩個字符之間的字符串提取

+1

你爲什麼要保存這樣在所有的數據?這實質上是一個計算列,這是不好的設計。 –

+0

不幸的是,這不是我的數據。我只是被要求操縱它lol –

回答

4

使用InStr()來查找(字符的位置。

下一頁使用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

相關問題