多次查找和替换

时间:2019-11-27 11:40:01

标签: excel vba search replace find

我已经拖网了该网站,但没有找到与我的问题相符的任何内容。

我有一个Excel文件(Sheet1),该文件在多个列和行(基本上是整个工作表)中包含各种外来字符(例如“ä”或“Ö”)。

在Sheet2中,我有一个包含这些字符(A)以及需要用(B)替换的字符的列表/表(A和B列)。

我希望使用VBA代码在Sheet1中搜索所有这些字符,并将它们全部替换为相应的替代字符。

任何帮助都会很棒。

谢谢

2 个答案:

答案 0 :(得分:2)

罗斯,您的解决方案几乎可以解决问题。您可以使用以下方法来简化它:

Sub ReplaceChar()
    Dim Sh1 As Worksheet
    Dim Sh2 As Worksheet
    Dim cel As Range

    Set Sh1 = Sheets(1)
    Set Sh2 = Sheets(2)

    For Each cel In Sh2.Columns(1).SpecialCells(2)
        With Sh1.Cells
            .Replace What:=cel, Replacement:=cel.Offset(, 1), MatchCase:=True
        End With
    Next
End Sub

Sheet1和Sheet2在运行宏之前:

enter image description here

enter image description here

...和运行代码后的Sheet1:

enter image description here

答案 1 :(得分:0)

经验告诉我,使用查找和替换时,大写和小写字符的处理方式相同。

下面的示例使用Q列作为查找字符,并使用R列替代。该代码可以查找替换列A中的单元格

Sub Using_Replace()
    Dim LstRw As Long, rng As Range, c As Range

    LstRw = Cells(Rows.Count, "Q").End(xlUp).Row
    Set rng = Range("Q1:Q" & LstRw)

    For Each c In rng.Cells

        Range("A:A").Replace what:=c, Replacement:=c.Offset(, 1), _
                             LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
                             SearchFormat:=False, ReplaceFormat:=False
    Next c

End Sub

enter image description here

测试代码时,您会发现查找/替换未注意到Q6和Q15中字符之间的差异。

但是,如果您遍历每个单元格,则会识别出差异。

-

Sub Using_LikeLoop()
    Dim LstRw As Long, rng As Range, c As Range
    Dim frNg As Range, f As Range

    LstRw = Cells(Rows.Count, "Q").End(xlUp).Row
    Set rng = Range("Q1:Q" & LstRw)
    Set frNg = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)

    For Each c In rng.Cells

        For Each f In frNg.Cells

            If f Like "*" & c & "*" Then f = Replace(f, c, c.Offset(, 1))

        Next f

    Next c

End Sub