2016-07-18 6 views
0

Ich habe 2 Blätter mit mehr als 50K Datenpunkte (Blatt 1), und eine Liste mit Zahlen und Alpha-Numerische Texte mehr als 30K (Blatt 2, Spalte A). Ich möchte, dass ein Makrocode jede Zelle von Blatt 2 in Blatt 1 durchsucht und die Hintergrundfarbe jeder Instanz ändert. Beispiel: Searching: ABC123, sollte Zelle wie „STACK_OVERFLOW Abc123 "finden ## @@"Suchen Sie einen Text oder eine Nummer aus einer Liste in einem anderen Blatt und markieren Sie jede Instanz

ich einen Code gefunden, aber so weit sie nicht erfüllen meine Forderung:.

Sub HighlightListed() 
Dim strConcatList As String 
Dim cell As Range 
For Each cell In Sheets("List").Range("A1:A30") 
     strConcatList = strConcatList & cell.Value & "|" 
Next cell 

For Each cell In Intersect(Sheets("Data").Range("A:A"), Sheets("Data").UsedRange) 'I assume my problem is here somewhere, its only highlights exact results. 
'If i am looking for "ABC123" it should also highlight cell like "PQRABC123" or ""XYZ_ABC123" 
    If InStr(strConcatList, cell.Value) > 0 Then 
      cell.Interior.Color = RGB(255, 0, 0) 
    End If 
Next cell 
End Sub 

ich bin ziemlich neu in VBA, so detaillierte Erklärung wird am nützlichsten

+0

hi, wenn du deinen Code soweit eingibst, dann können wir ihn korrigieren, dann sind die Leute eher geneigt zu helfen, da es weniger Zeit braucht - so können mehr Leute helfen - sie sind selten dazu geneigt, dir nur den Code zu geben, besonders ohne Beweis der Anstrengung. – Visualife

+0

Danke für die sofortige Antwort, das Problem ist, ich bin wirklich neu in VBA-Programmierung, ich habe keinen Code geschrieben, aber einige der VBA-Codes von Google versucht, einige von ihnen markieren nur Zelle, wo es genaue Übereinstimmung oder einige von ihnen markieren alle Instanzen, suchen aber nur eine Textzeichenfolge. obwohl ich dir den Code besorge, den ich für meine Bedürfnisse bearbeiten wollte. – Rosh

+0

Below-Code ist nächstes Spiel für meine Anforderung, aber es funktioniert nicht markieren, wenn der Text Zellen nicht exakt übereinstimmt: – Rosh

Antwort

0

Try this:

Sub HighlightListed() 
     Dim searches As New Collection 
     Dim search As Variant 
     Dim cell As Range 
     For Each cell In Sheets("List").Range("A1:A30") 
      If cell.Value <> "" Then 
       searches.Add cell.Value 
      End If 
     Next cell 
     For Each cell In Intersect(Sheets("Data").Range("A:A"), Sheets("Data").UsedRange) 
      For Each search In searches 
       If InStr(0, cell.Value, Cstr(search), 1) > 0 Then 
        cell.Interior.Color = RGB(255, 0, 0) 
        Exit For 
       End If 
      Next search 
     Next cell 
End Sub 
+0

Danke! Wieder Julian für schnelle Antwort.Der obige Code hebt nicht nur die Ergebnisse, sondern auch alle Zellen in UsedRange in A-Spalte. – Rosh

+0

Sind alle Felder im Suchbereich gefüllt mit Werten? Ich habe den Code bearbeitet, bitte versuchen Sie es erneut mit diesem Versuch. –

+0

Bingooo! Das scheint zu funktionieren. Thaaaaaaankuuuu Sooooo Mucchhhh, Awesome! ... Toller Job Julian. Bitte erklären Sie mir auch die Logik. wo ich falsch lag ? Jetzt werde ich dies auf meine tatsächlichen Daten testen. – Rosh

Verwandte Themen