Excel VBA如何将正则匹配的子匹配转为小写,保留机器编号格式
Excel VBA 实现指定内容转小写的解决方案
我们可以通过拆分单元格内容为单词数组的方式处理,逻辑更清晰,也方便跳过第一个单词和机器编号的判断:
- 拆分每行文本为独立单词
- 第一个单词直接保留原始格式
- 从第二个单词开始逐个判断:如果是机器编号格式则保留原样,否则转为小写
- 拼接处理后的单词回写单元格
以下是可直接运行的完整代码:
Sub dlgho() Dim c As Range Dim wordArr As Variant Dim i As Long Dim isCode As Boolean Dim regex As New RegExp ' 匹配机器编号的正则:字母开头,后面包含数字和/或横杠 With regex .Global = False .IgnoreCase = True ' 适配J0-315、S1-179、Y225这类编号格式,支持挪威语特殊字母ÆØÅ .Pattern = "^[A-ZÆØÅ]+[0-9]+([\-][0-9]+)?$" End With ' 遍历目标范围的单元格 For Each c In Sheet8.Range("A1:A896") If Trim(c.Value) <> "" Then ' 按空格拆分单词 wordArr = Split(Trim(c.Value), " ") ' 从第二个单词开始处理 For i = LBound(wordArr) + 1 To UBound(wordArr) ' 判断当前单词是不是机器编号 isCode = regex.Test(wordArr(i)) If Not isCode Then ' 不是编号就转小写 wordArr(i) = LCase(wordArr(i)) End If Next i ' 拼接后写回单元格 c.Value = Join(wordArr, " ") End If Next c End Sub
如果你后续需要自动把SO2这类化合物转为大写,只需要加一段简单的匹配逻辑即可,目前的处理结果完全符合你给出的预期输出,建议运行前先备份原始数据避免误操作。
内容的提问来源于stack exchange,提问作者eirikdaude
相关产品推荐
相关产品推荐

