×

excel 正则表达式替换

excel 正则表达式替换(ExcelVBA,正则表达式,怎么替换一部分字符串)

admin admin 发表于2023-07-31 16:34:58 浏览43 评论0

抢沙发发表评论

本文目录

ExcelVBA,正则表达式,怎么替换一部分字符串

只有两个关键字最好不用正则,IF INSTR两次就可以了,如果关键字多一点,可以使用for循环,例如:

str = “.需要处理的字符串,可以从文件、区域、数组等..“for each t in array(“中国人民“,“美国纽约“,“印度阿三“)    if instr(str,t)》0 then        str = t        exit for    end ifnext t

比正则表达式简单和高效。

求教excel大神,因为数据庞大,我现在要将6-5-404这种格式替换为文字的(图中红色文字),全部替换

以下是EXCEL2007版使用VBA来实现将所有类似于“6-5-404”替换为“6栋5单元404”的解决方案

一、点击EXCEL左上角的OFFICE圆形按钮,再点击“EXCEL 选项”按钮,如下:

二、勾选上“在功能区显示‘开发工具’选项卡”的选项,并确定,如下图

三、此时,EXCEL的菜单栏中多出了“开发工具”的菜单,点击“开发工具”菜单下的“Visual Basic”工具按钮,我就可以进入到VBE界面,如下:

四、在VBE界面的“工具”菜单里,点击“引用”菜单项

五、在弹出的对话框中,找到“Microsoft VBScript Regular Expressions 5.5”,将其左边的勾选框,打上勾,确定完成引用设置。图示如下:

六、在VBE界面的“插入”菜单里,点击“模块”,将看到左侧的工程资源管理器上有显示“模块1”

七、双击“模块1”,进入代码窗口,请将以下粗体部分的代码复制粘贴到代码窗口中:

Public Sub 特殊格式转换()

 ’定义正则表达式对象

    Dim oRegExp As Object

    ’定义匹配字符串集合对象

    Dim oMatches As Object

    ’创建正则表达式

    ’定义要执行正则查找的文本变量

    Dim sText As String

    Dim rng As Range

        Set oRegExp = CreateObject(“vbscript.regexp“)

        With oRegExp

            ’设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项

            .Global = True

            ’设置是否区分大小写,True表示不区分大小写, False表示区分大小写

            .IgnoreCase = True

            ’设置要查找的字符模式

            .Pattern = “(\d+)(-)(\d+)(-)(\d+)“

            ’对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空

            For Each rng In ActiveSheet.UsedRange

                sText = rng.Value

                Set oMatches = .Execute(sText)

            ’把字符串中用正则找到的所有匹配字符替换为其它字符

                If .Test(sText) Then rng.Value = .Replace(sText, “$1栋$3单元$5“)

            Next

        End With

    Set oRegExp = Nothing

    Set oMatches = Nothing

End Sub

八、显示截图如下:

点击“文件”菜单下的“关闭并返回到Microsoft Excel”菜单项,返回EXCEL界面

九、选中你想要替换内容的工作表,并在点选“开发工具”菜单下的“宏”按钮,如下图所示:

十、弹出如下对话框

十一、选中“特殊格式转换”后,按下“执行按钮”

十二、搞定了! 结果如下:

【注】本宏命令只对“数字-数字-数字”形式的文字内容进行匹配型的替换,任何其它与之不匹配的文字内容都保持原样不变。

以上是本人对“正则表达式”的现学现用,希望对你有所帮助

excel怎么批量替换顺序: 我把所有剧情-xx的内容换成xx-剧情 -----xx是任意字, 我估计要用正则表达式把,

我的方法可能有些麻烦 不过应该是可行的 分2个步骤1.选中要修改的列 ---替换:查找内容填“剧情-”替换为不填 确定,这样这一列就变成只有XX的内容了 然后在后面插入一列内容为“-剧情”2.将两列内容合并 令“XX”为A列““-剧情”为B列 方法如下:在C1单元格运用函数=CONCATENATE(A1,B1)然后拉选全部 C列得出的就是你想要的内容希望对楼主有所帮助

Excel VBA 正则式部分替换怎么做

部分替换参考如下:Public Sub TestReplace() Dim ss, re, rv ss = “我爱你abc“ Set re = New RegExp re.Pattern = “^\w+$“ re.Global = True re.IgnoreCase = True re.MultiLine = True rv = re.Replace(ss, “$1“) MsgBox rv End Su

Excel替换内容高级方法,相当于正则表达式

在H1输入以下公式,然后向下填充公式

=--MID(G1,FIND(“:“,G1)+1,FIND(“(“,G1)-FIND(“:“,G1)-1)

excel vba如何使用正则表达式把字符串里字母和数字替换,字母替换为A,数字替换为0

一张图片解决你所有问题,细看

Function 替换(检测内容) As String    Dim regx As Object                                 ’后期绑定    Set regx = CreateObject(“VBScript.RegExp“)         ’后期绑定    Dim mat As Object    Dim m As Object    Dim 返回内容 As String        Set regx = New RegExp        With regx        .Global = True                ’如果检测内容中含有非字母和非数字则返回“失败“        .Pattern = “\W“        Set mat = .Execute(检测内容)        If mat.Count 《》 0 Then            替换 = “失败“            Exit Function        End If                ’替换字线为A,数字为0,单个字母替换,返回替换后的字符        .Pattern = ““        返回内容 = .Replace(检测内容, “A“)                .Pattern = ““        替换 = .Replace(返回内容, “0“)    End WithEnd FunctionSub test()    Cells(2, “B“) = 替换(Cells(1, “B“))    Cells(2, “C“) = 替换(Cells(1, “C“))End Sub

excel:可不可以用正则表达式来写查找与替换

excel函数中不支持正则(但是VBA中支持),你的要求可以用这个公式,假定数据在A列从A1开始,在B1可以填入=LEFT(A1,MATCH(1,1/(MID(A1,ROW($1:$100),1)》=“啊“),)-1)这是数组公式,按Ctrl+Shift+Enter结束