以多列replace值

我是新来的vba,所以忍受着我。

我需要replace工作表中多个列的值。 有大约50个值需要匹配和replace,如果存在的话。

例如:我想在列C和F中查找是否存在任何列出的值,然后将其replace为另一个文本。 每个search值都有一个独特的替代。

优选地,如果string可以用相同的查找来search和replace两个列。 没有每个专栏的几个陈述。

这是我试图使用的:

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 

因为这是我需要更改/添加每个“replace”2条目。

我也得到需要这种治疗regulary的新工作表。 将这些图纸转换为我的规格最简单的方法是什么? 有没有办法在单独的工作表中声明search和replace,并以某种方式调用该文档并运行macros?

这应该符合你的需求:

 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语句以展开翻译表。

按照我的post的逻辑,这里是一个适合您的需求的代码。

 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:

在这里输入图像说明

让我们知道这是否有帮助。

如果您的表格在数据中没有间隔地设置,那么使用UsedRange是您所需要的一个好方法。

取值范围为“C:C,F:F” xlPart。replace“Search4”,“Text4”,xlPart。replace“Search5”,“Text5”,xlPart。replace“Search6”,“Text6”,xlPart。replace“Search7”,“Text7”,xlPart结束