删除单词 w/Upper 和小写字母或仅删除小写字母
Delete Words w/Upper And Lowercase Letters or Only Lowercase Letters
Objective: 我有一个带有列 Item_Desc 的 Access table。我希望此列仅包含服装的品牌名称。品牌名称始终以全部大写形式书写,例如 "RALPH LAUREN".
问题: Item_Desc 列填充了品牌名称和服装类型(以及颜色等)。因此,Item_Desc 列可能包含 "RALPH LAUREN"(好)或可能 "RALPH LAUREN Coat black"(坏)。
问题: 是否有一个查询可以 运行 删除 Item_Desc 中的单词:1) 以大写字母开头,后跟大写字母由小写字母(例如,"Coat"),或 2) 仅以小写字母书写(例如,"black")。
因此,"RALPH LAUREN Coat black" 最终会在 Item_Desc 列中显示为 "RALPH LAUREN"。
我的 table 名字是 "Brand"。
最后,我无法控制生成的报告,所以很遗憾,我无法将品牌、样式和颜色导入到单独的列中(我不认为!)。
您可以使用基于正则表达式的 VBA 函数来实现您的目标。
这是在立即 window 中使用您的样本输入测试的一个这样的函数:
? OnlyUpperCaseWords("RALPH LAUREN")
RALPH LAUREN
? OnlyUpperCaseWords("RALPH LAUREN Coat black")
RALPH LAUREN
您可以在 UPDATE
查询中使用该函数来更改存储的 Item_Desc 值:
UPDATE Brand AS b
SET b.Item_Desc = OnlyUpperCaseWords(b.Item_Desc)
WHERE b.Item_Desc Is Not Null;
这是函数...
Public Function OnlyUpperCaseWords(ByVal strSource As String) As String
Static re As Object
If re Is Nothing Then
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.IgnoreCase = False
re.Pattern = "\s*\b[A-Za-z]*[a-z]+[A-Za-z]*\b\s*"
End If
'OnlyUpperCaseWords = re.Replace(strSource, vbNullString)
OnlyUpperCaseWords = Trim(re.Replace(strSource, " "))
End Function
Objective: 我有一个带有列 Item_Desc 的 Access table。我希望此列仅包含服装的品牌名称。品牌名称始终以全部大写形式书写,例如 "RALPH LAUREN".
问题: Item_Desc 列填充了品牌名称和服装类型(以及颜色等)。因此,Item_Desc 列可能包含 "RALPH LAUREN"(好)或可能 "RALPH LAUREN Coat black"(坏)。
问题: 是否有一个查询可以 运行 删除 Item_Desc 中的单词:1) 以大写字母开头,后跟大写字母由小写字母(例如,"Coat"),或 2) 仅以小写字母书写(例如,"black")。
因此,"RALPH LAUREN Coat black" 最终会在 Item_Desc 列中显示为 "RALPH LAUREN"。
我的 table 名字是 "Brand"。
最后,我无法控制生成的报告,所以很遗憾,我无法将品牌、样式和颜色导入到单独的列中(我不认为!)。
您可以使用基于正则表达式的 VBA 函数来实现您的目标。
这是在立即 window 中使用您的样本输入测试的一个这样的函数:
? OnlyUpperCaseWords("RALPH LAUREN")
RALPH LAUREN
? OnlyUpperCaseWords("RALPH LAUREN Coat black")
RALPH LAUREN
您可以在 UPDATE
查询中使用该函数来更改存储的 Item_Desc 值:
UPDATE Brand AS b
SET b.Item_Desc = OnlyUpperCaseWords(b.Item_Desc)
WHERE b.Item_Desc Is Not Null;
这是函数...
Public Function OnlyUpperCaseWords(ByVal strSource As String) As String
Static re As Object
If re Is Nothing Then
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.IgnoreCase = False
re.Pattern = "\s*\b[A-Za-z]*[a-z]+[A-Za-z]*\b\s*"
End If
'OnlyUpperCaseWords = re.Replace(strSource, vbNullString)
OnlyUpperCaseWords = Trim(re.Replace(strSource, " "))
End Function