我已经拖网了该网站,但没有找到与我的问题相符的任何内容。
我有一个Excel文件(Sheet1),该文件在多个列和行(基本上是整个工作表)中包含各种外来字符(例如“ä”或“Ö”)。
在Sheet2中,我有一个包含这些字符(A)以及需要用(B)替换的字符的列表/表(A和B列)。
我希望使用VBA代码在Sheet1中搜索所有这些字符,并将它们全部替换为相应的替代字符。
任何帮助都会很棒。
谢谢
答案 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在运行宏之前:
...和运行代码后的Sheet1:
答案 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
测试代码时,您会发现查找/替换未注意到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