2016-11-18 2 views
0

Ich habe derzeit eine Liste von Schlüsselwörtern (zB CFO, CTO, Interim Manager, etc.) und ich möchte ein Makro zu einer Schaltfläche, die alle Zellen in der Spalte E von Sheet 1, die diese Schlüsselwörter enthalten dann suchen können gib das Ergebnis zurück und markiere das Schlüsselwort in der Zelle.Wie schreibe ich ein VB-Skript, um mehrere Schlüsselwörter in allen Zellen zu finden und jedes Schlüsselwort hervorzuheben?

  • Jedes Schlüsselwort ist in einer separaten Zelle in Spalte A von Blatt 2.
  • Wenn ein Schlüsselwort in der Liste enthalten ist, wird es für eine Suche, aber wenn es mehr sind, wird es für die Kombination suchen. Hier

ist der Screenshot zu veranschaulichen, was ich oben beschrieben

enter image description here

ich etwas über das Internet mit Vorschlag gefunden haben Autofilter zu verwenden, aber ich kann es nur eine Suche durchzuführen verwenden für ein Schlüsselwort Dies ist, was ich habe versucht:

Sub EmailFilter() 

Application.ScreenUpdating = False 

With Worksheets("Sheet1").Columns("E:E") 
     .AutoFilter Field:=1, Criteria1:= _ 
    "=*" & Worksheets("Sheet2").Range("A2:A10") & "*", Operator:=xlAnd 
    End With 

Application.ScreenUpdating = True 

End Sub 

Vielen Dank im Voraus.

+0

Haben Sie einen Code probiert? – bzimor

+0

@bzimor Wie ich in meinem Post gesagt habe, habe ich AutoFilter versucht, aber ich kann nur Ergebnis für das erste Schlüsselwort in der Liste zurückbekommen. – magnus1012

+0

@bzimor Hier ist der Code, den ich ausprobiert habe. Entschuldigen Sie, wenn es lahm ist, als ich vor ein paar Tagen angefangen habe, VBA zu lernen. Sub EmailFilter() Application.ScreenUpdating = False Mit Worksheets ("Sheet1") Spalten. ("E: E") .AutoFilter Field: = 1, Criteria1: = _ "= *" & Arbeitsblätter ("Sheet2"). Bereich ("A2: A12") & "*", Operator: = xlAnd Ende mit Application.ScreenUpdating = True End Sub – magnus1012

Antwort

0

Der folgende Code wird alle Übereinstimmungen mit der gleichen Farbe (ich habe blau gewählt). Sie können dieses Makro in ein Modul schreiben und dann eine Formularsteuerschaltfläche erstellen und das Makro der Schaltfläche zuweisen.

Sub macro() 
Dim a As Integer, x As String, mystring As String 
a = 2 
Sheets("Sheet2").Activate 
Cells(a, 1).Activate 
Do While ActiveCell.Value <> "" 
    x = ActiveCell.Value 
    p = Len(x) 
    Application.GoTo Sheet1.Range("E2") 
    Do While ActiveCell.Value <> "" 
     mystring = ActiveCell.Value 
     If InStr(mystring, x) > 0 Then 
      Position = InStr(1, mystring, x) 
      If Position > 0 Then 
       ActiveCell.Characters(Position, p).Font.Color = RGB(255, 0, 0) 
      End If 
     End If 
     ActiveCell.Offset(1, 0).Activate 
    Loop 
    a = a + 1 
    Application.GoTo Sheet2.Cells(a, 1) 
Loop 
End Sub 

Lassen Sie mich wissen, wenn Sie andere spezifische Anforderungen haben, damit der Code geändert werden kann. Ich hoffe das hilft.

+0

Vielen Dank für Ihre Aufmerksamkeit. Ich habe deinen Code ausprobiert, aber das Match wird nicht farbig dargestellt. – magnus1012

+0

Die Einschränkungen des Codes sind: 1. Sie sollten keine Leerzeichen in den Spalten haben, d. H. In Spalte 1 von Tabelle2 oder Spalte E von Tabelle1. 2. Der Text sollte genau übereinstimmen, d. H. Der Text sollte in demselben Fall sein, ob er oberer oder unterer Text ist. 3. Die Suche beginnt mit der ersten Zeile in den entsprechenden Spalten, die Sie suchen möchten. Und ich habe es erneut versucht und festgestellt, dass es gut funktioniert. Wenn Sie Ihre Frage bearbeiten und Screenshots der beiden Blätter bereitstellen können, könnte dies hilfreich sein. Sie können sogar ein Beispiel für die Spalten freigeben, die bei der Behebung des Problems hilfreich sein können. –

+0

Ich habe einen Screenshot des Inhalts und der Keywords hinzugefügt. – magnus1012

Verwandte Themen