VB-Skript zum Suchen und Ersetzen mithilfe der Nachschlagetabelle

564
Nicky G

Ich habe eine Tabelle, die ich für ein Audit anonymisieren muss (Benutzernamen, Hostnamen, IP-Adressen usw.).

Ich versuche, eine Such- und Ersetzungsaufgabe für eine gesamte Arbeitsmappe auszuführen. Ich habe eine Nachschlagetabelle erstellt, die eine Suchspalte (zu findende Daten) und eine Ersetzungsspalte (die Daten, die die Daten ersetzen werden) enthält in Spalte eins).

Ich habe das unten stehende VB-Skript verwendet, das für ein einzelnes Arbeitsblatt funktioniert, aber ich muss die gesamte Arbeitsmappe durchsuchen (abgesehen von einem Blatt, das die Nachschlagetabelle enthält). Die Arbeitsmappe enthält insgesamt 76 Blätter.

Ich habe unten auf das einzelne Arbeitsblatt verwiesen und möchte dieses durch einen Eintrag ersetzen, der alle Arbeitsblätter außer einem Arbeitsblatt innerhalb der Arbeitsmappe referenziert. Die Nachschlagetabelle ist in der Arbeitsmappe auf dem letzten Blatt enthalten. Sie möchten also nicht, dass diese in der 'Suche' enthalten ist.

Jede Hilfe zu diesem Thema wäre sehr dankbar. Wenn Sie zusätzliche Informationen benötigen, lass es mich wissen. Vielen Dank im Voraus.

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 Antwort auf die Frage

0
robinCTS

Es ist nur eine einfache Sache, die einzelne Arbeitsblattreferenz durch eine zusätzliche äußere Schleife zu ersetzen:

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 

Das Nachschlagetabellenblatt wird nach Namen ausgeschlossen.

Danke an RobinCTS, das funktioniert und alle Blätter, ausgenommen das Blatt mit der Nachschlagetabelle, wurden geändert. Wirklich schätzen die schnelle Antwort. Danke vielmals. Nicky G vor 6 Jahren 0
@NickyG Gerne helfen. robinCTS vor 6 Jahren 0