Поиск текста или числа из списка на другом листе и выделение каждого экземпляра

vba excel-vba excel

46 просмотра

1 ответ

17 Репутация автора

У меня есть 2 листа с более чем 50 КБ точек данных (Лист 1) и список с числами и буквенно-цифровыми текстами более 30 КБ (Лист 2, столбец А). Я хочу, чтобы код макроса осуществлял поиск в каждой ячейке листа 2 на листе 1 и изменял цвет фона каждого экземпляра. Пример: Поиск: ABC123 , должен найти ячейку, такую ​​как "Stack_Overflow Abc123 " ## @@ ".

Я нашел некоторый код, но пока они не удовлетворяют моему требованию:

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

Я довольно новичок в VBA, поэтому подробное объяснение будет наиболее полезным

Автор: Rosh Источник Размещён: 18.07.2016 06:45

Ответы (1)


0 плюса

819 Репутация автора

Решение

Попробуй это:

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
Автор: Julian Kuchlbauer Размещён: 18.07.2016 08:07
32x32