Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何使用VBA修改字符串的一部分_Excel_Excel 2013_Vba - Fatal编程技术网

Excel 如何使用VBA修改字符串的一部分

Excel 如何使用VBA修改字符串的一部分,excel,excel-2013,vba,Excel,Excel 2013,Vba,例如(Then语句不正确,我正试图找出放在那里的内容): 比如说电子邮件“somebody@goggle.com“在单元格A2中,因此Instr在A2中找到“@goggle.com”。如果我想把@goggle.com改为@google.com,我该怎么做 我的目标是找到电子邮件域的常见拼写错误并加以修复。查看Replace语句 在这种情况下: Replace(Cells(i, "A"), "@google.com", "@gmail.com") 基本上,公式是这样的:在这个字符串中,`Cell

例如(Then语句不正确,我正试图找出放在那里的内容):

比如说电子邮件“somebody@goggle.com“在单元格A2中,因此Instr在A2中找到“@goggle.com”。如果我想把@goggle.com改为@google.com,我该怎么做


我的目标是找到电子邮件域的常见拼写错误并加以修复。

查看
Replace
语句

在这种情况下:

Replace(Cells(i, "A"), "@google.com", "@gmail.com")
基本上,公式是这样的:在这个字符串中,`Cells(i,“A”)查找“@google.com”,并将其替换为“@gmail.com”


这样,您就不需要if语句,因为replace函数不会替换它找不到的任何内容。换句话说,如果在字符串中找不到“@google.com”,它将继续移动并不返回任何内容。

如前所述,要修复代码,可以使用Replace函数

For i = 1 To 20

    If InStr(1, Cells(i, "A"), "@goggle.com") > 0 Then

        Cells(i, "A") = Replace(Cells(i, "A"), "@goggle.com", "@google.com")

    End If

Next

但为了更有效地进行所有替换,请使用Range()。替换方法可用于值和替换的列表:

Option Explicit

Public Sub fixColumnSpelling()

    Const FIND_LIST As String = "@goggle.com @yahho.com @test1.com"
    Const REPL_LIST As String = "@google.com @yahoo.com @test2.com"

    Dim totalItems As Long, i As Long, findItems As Variant, replItems As Variant

    findItems = Split(FIND_LIST)
    replItems = Split(REPL_LIST)

    totalItems = UBound(findItems)

    For i = 0 To totalItems     'bulk replecements in col A

        ActiveSheet.UsedRange.Columns(1).Replace _
            What:=findItems(i), _
            Replacement:=replItems(i), _
            LookAt:=xlPart, _
            SearchOrder:=xlByColumns, _
            MatchCase:=False

    Next

End Sub

如何使用后一个功能列出多个替换条件?我编辑了答案以显示批量替换功能的示例设置
Option Explicit

Public Sub fixColumnSpelling()

    Const FIND_LIST As String = "@goggle.com @yahho.com @test1.com"
    Const REPL_LIST As String = "@google.com @yahoo.com @test2.com"

    Dim totalItems As Long, i As Long, findItems As Variant, replItems As Variant

    findItems = Split(FIND_LIST)
    replItems = Split(REPL_LIST)

    totalItems = UBound(findItems)

    For i = 0 To totalItems     'bulk replecements in col A

        ActiveSheet.UsedRange.Columns(1).Replace _
            What:=findItems(i), _
            Replacement:=replItems(i), _
            LookAt:=xlPart, _
            SearchOrder:=xlByColumns, _
            MatchCase:=False

    Next

End Sub