我已经拖网了该网站,但没有找到与我的问题完全相符的内容。
我有一个excel文件(Sheet1),该文件在多个列和行(基本上是整个工作表)中包含各种外来字符(例如,“ä”或“Ö”)。
在Sheet2中,我有一个包含这些字符(A)以及需要用(B)替换的字符的列表/表(A和B列。
我希望使用VBA代码在Sheet1中搜索所有这些字符,并将它们全部替换为相应的替代字符。
任何帮助都会很棒。
谢谢,
[经验告诉我,使用查找和替换时,大写和小写字符都一样。
下面的示例使用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
当您测试代码时,您会发现查找/替换没有注意到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
罗斯,您的解决方案几乎可以解决问题。您可以使用以下方法简化它:
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)
End With
Next
End Sub
运行宏之前的Sheet1和Sheet2:
...以及运行代码后的Sheet1: