我有一个电子表格,需要将其匿名化以进行审计(用户名、主机名、IP 地址等)。
我正在尝试对整个工作簿运行查找和替换任务,我创建了一个查找表,其中包含“查找”列(要查找的数据)和“替换”列(将替换第一列中的数据的数据)。
我一直在使用下面的 VB 脚本,它适用于单个工作表,但我需要搜索整个工作簿(除了包含查找表的工作表),该工作簿总共有 76 张工作表。
我已引用了下面的单个工作表,并希望将其替换为引用工作簿中除一个工作表之外的所有工作表的条目。查找表包含在工作簿的最后一张工作表中,因此不希望将其包含在“查找”中。
任何帮助都将不胜感激。如果您需要任何其他信息,请告诉我。提前致谢。
Sub abbrev()
Dim abvtab() As Variant
Dim ltsheet As Worksheet
Dim datasheet As Worksheet
Dim lt As Range
Set ltsheet = Sheets("sheet2")
' REFERENCE TO SINGLE WORKSHEET
Set datasheet = Sheets("ACTIVE_DIRECTORY_User")
Set lt = ltsheet.Range("A2", ltsheet.Range("B2").End(xlDown))
abvtab = lt
For i = 1 To UBound(abvtab)
datasheet.Cells.Replace What:=abvtab(i, 1), Replacement:=abvtab(i, 2), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Next i
End Sub
答案1
这只是用额外的外循环替换单个工作表引用的简单问题:
Sub abbrev()
Dim abvtab() As Variant
Dim ltsheet As Worksheet
Dim datasheet As Worksheet
Dim lt As Range
Dim i As Long
Set ltsheet = Sheets("sheet2")
' REFERENCE TO SINGLE WORKSHEET
' Set datasheet = Sheets("ACTIVE_DIRECTORY_User")
Set lt = ltsheet.Range("A2", ltsheet.Range("B2").End(xlDown))
abvtab = lt
For Each datasheet In Worksheets
If datasheet.Name <> ltsheet.Name Then
For i = 1 To UBound(abvtab)
datasheet.Cells.Replace What:=abvtab(i, 1), Replacement:=abvtab(i, 2), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False
Next i
End If
Next datasheet
End Sub
查找表格工作表按名称排除。