VB скрипт для поиска и замены с использованием таблицы поиска

473
Nicky G

У меня есть электронная таблица, которую нужно анонимировать для аудита (имена пользователей, имена хостов, 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

1 ответ на вопрос

0
robinCTS

Просто замените ссылку на один лист на дополнительный внешний цикл:

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 

Лист таблицы поиска исключен по имени.

Благодаря RobinCTS это сработало, и все листы, кроме листа, содержащего справочную таблицу, были исправлены. Очень ценю быстрый ответ. Большое спасибо. Nicky G 5 лет назад 0
@NickyG Рад помочь. robinCTS 5 лет назад 0

Похожие вопросы