我是vba的新手所以请耐心等待。
我需要替换工作表中多列中的值。如果存在,则需要匹配和替换大约50个值。
例如: 我想在列C和F中搜索以查看是否存在任何列出的值,然后将其替换为另一个文本。每个搜索的值都有唯一的替换值。
优选地,如果字符串可以使用相同的查找来搜索和替换两个列。每列都没有多个语句。
这是我试图使用的:
Sub reppp()
Columns("C:C").Replace What:="Search1", Replacement:="Text1", SearchOrder:=xlByColumns
Columns("F:F").Replace What:="Search1", Replacement:="Text1", SearchOrder:=xlByColumns
Columns("C:C").Replace What:="Search2", Replacement:="Text2", SearchOrder:=xlByColumns
Columns("F:F").Replace What:="Search2", Replacement:="Text2", SearchOrder:=xlByColumns
End Sub
因为我需要为每个“替换”更改/添加2个条目。
我也得到了新的工作表,需要定期进行这种处理。将这些表格转换为我的规格的最简单方法是什么?有没有办法在单独的工作表中声明搜索和替换,并以某种方式调用该文档并运行宏?
答案 0 :(得分:0)
这应该符合您的需求:
Sub demo()
Dim r As Range
Set r = Range("C:C, F:F")
ary1 = Array("Search1", "Search2")
ary2 = Array("Text1", "Text2")
For i = 0 To 1
r.Replace What:=ary1(i), Replacement:=ary2(i)
Next i
End Sub
注意:强>
您可以增加数组并修改 For 语句以展开转换表。
答案 1 :(得分:0)
按照我的帖子here的逻辑,这里有一个符合您需求的代码。
Sub FindReplaceWithRef()
Dim Wbk As Workbook: Set Wbk = ThisWorkbook
Dim Wsht As Worksheet: Set Wsht = Wbk.Sheets("Sheet1") 'Modify as needed.
Dim Dict As Object
Dim RefList As Range, RefElem As Range
Dim TargetRng As Range
Set Dict = CreateObject("Scripting.Dictionary")
Set RefList = Wsht.Range("J1:J3") 'Modify as needed.
Set TargetRng = Union(Wsht.Range("C1:C20"), Wsht.Range("F1:F20")) 'Modify as needed.
With Dict
For Each RefElem In RefList
If Not .Exists(RefElem) And Not RefElem Is Nothing Then
.Add RefElem.Value, RefElem.Offset(0, 1).Value
End If
Next RefElem
End With
For Each Key In Dict
With TargetRng
.Replace What:=Key, Replacement:=Dict(Key)
End With
Next Key
Set Dict = Nothing
End Sub
<强>截图:强>
<强> Before running code:
强>
<强> After running code:
强>
如果有帮助,请告诉我们。
答案 2 :(得分:0)
如果您的表格在数据中没有间隙设置,那么使用UsedRange可以满足您的需求。
范围( “C:C,F:F”)选择。 使用ActiveSheet.UsedRange .Replace“Search1”,“Text1”,xlPart .Replace“Search2”,“Text2”,xlPart .Replace“Search3”,“Text3”,xlPart .Replace“Search4”,“Text4”,xlPart .Replace“Search5”,“Text5”,xlPart .Replace“Search6”,“Text6”,xlPart .Replace“Search7”,“Text7”,xlPart
结束