2016-08-01 111 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

相关问题