我在Access中有一个格式如下的字段:洛杉矶,CA#00001
我需要修改文本字段,如下所示:#001 - 洛杉矶,加利福尼亚州
要做到这一点,我使用这个公式:
"#" & Format([STORE NUMBER],"000") & " - " & Trim(Left([STORE NAME],InStr(1,[STORE NAME],"#")-1))
我遇到的问题是我的数据集中的每条记录都没有格式化。有几个实例的位置名称是: "加州测试商店"。
如果是这种情况,我会得到一个" #Func!"错误,可能是因为没有"#"签署以寻找应用公式。
任何人都可以帮助找到解决方法以避免此错误。
理想情况下,我希望如果输出确实产生" #Func!"错误,只是像这样使用原始名称:
+------------------------+------------------------+
| Original | New |
+------------------------+------------------------+
| Los Angeles, CA #00001 | #001 - Los Angeles, CA |
| Test Store for CA | Test Store for CA |
| San Diego, CA #00002 | #002 - San Diego, CA |
+------------------------+------------------------+
答案 0 :(得分:2)
您可以让函数返回格式化值,如果#
不存在,则返回原始值。
Public Function SplitStore(ByVal value_ As String) As String
If InStr(1, value_, "#") = 0 Then
SplitStore = value_
Exit Function
End If
Dim arr As Variant
arr = Split(value_, "#")
SplitStore = "#" & Format(arr(1), "000") & " -" & arr(0)
End Function
要打电话:
SELECT SplitStore([STORE NUMBER]) As FormattedStore
...
'#001 -Los Angeles, CA
答案 1 :(得分:2)
在使用"#"
搜索"#"
之前,您只需在字符串的末尾添加InStr
:
"#" & Format([STORE NUMBER],"000") & " - " & Trim(Left([STORE NAME],InStr(1,[STORE NAME]&"#","#")-1))
如果"#"
已存在,InStr
将找到现有位置。如果一个不存在,则InStr(1,[STORE NAME]&"#","#")-1
将返回[STORE NAME]
的长度,因此Left
将返回整个字段。