我的列包含字符串。该列中的字符串如下所示:
FirstString / SecondString / ThirdString
我需要解析这个,所以我有两个值:
值1:FirstString / SecondString 值2:ThirdString
我可以有更长的字符串,但我总是把它分开,如[string1 / string2 / string3 / ...] [stringN]
我需要得到的是:
Column1:[string1 / string2 / string3 / etc ....] 第2栏:[stringN]
无论如何我都无法找到这样做。有什么建议?我需要正则表达式吗?如果是这样,有没有办法在查询设计器中执行此操作?
更新:这两个表达式都会出现此错误:“您输入的表达式包含无效语法,或者您需要将文本数据括在引号中。”
expr1: Left( [Property] , InStrRev( [Property] , "/") - 1), Mid( [Property] , InStrRev( [Property] , "/") + 1)
expr1: mid( [Property] , 1, instr( [Property] , "/", -1)) , mid( [Property] , instr( [Property] , "/", -1)+1, length( [Property] ))
答案 0 :(得分:1)
在查询中,使用以下两个表达式作为列:
Left(col, InStrRev(col, "/") - 1), Mid(col, InStrRev(col, "/") + 1)
col是你的专栏。
如果在VBA中,请使用以下内容:
last_index= InStrRev(your_string, "/")
first_part= Left$(your_string, last_index - 1)
last_part= Mid$(your_string, last_index + 1)
答案 1 :(得分:0)
mid(col,1,instr(col,“/”, - 1)),mid(col,instr(col,“/”, - 1)+1,length(col))
答案 2 :(得分:0)
您是否有可能修复基础数据结构以进行正确规范化,以便您可以首先避免问题?除了检索数据外,整个主机还是准确维护数据的问题,如果你没有在一个字段中存储多个值,那么这一切都会得到改善。
答案 3 :(得分:0)
我知道你在查询中尝试这样做,所以SQL字符串函数可能是你最好的选择。
但是,值得一提的是,可以从VBA访问正则表达式COM对象。只需在宏代码中添加对Microsoft VBScript Regular Expressions库的引用。
然后你可以做这样的事情
Dim szLine As String
Dim regex As New RegExp
Dim colregmatch As MatchCollection
With regex
.MultiLine = False
.Global = True
.IgnoreCase = False
End With
szLine = "FirstString/SecondString/ThirdString"
regex.Pattern = "^(.*?\/.*?)/(.*?)$"
Set colregmatch = regex.Execute(szLine)
'FirstString/SecondString
Debug.Print colregmatch.Item(0).submatches.Item(0)
'ThirdString
Debug.Print colregmatch.Item(0).submatches.Item(1)