Поиск в столбце по словарю - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день. Дано 2 листа: "данные" и "словарь". На листе "данные" в столбце T содержатся рукописные описания фин операций, нужно по значениям из столбца А листа "словарь" произвести нечувствительный к регистру поиск по ключевым словам. В случае нахождения искомого слова проставлять в столбец BB значение 1. По аналогии с фильтром "содержит", но фильтром пользоваться не получается, потому что: 1) в данных содержатся пустые ячейки (разрывы) 2) словарь по которому нужно вести поиск состоит из десятка слов Попробовал использовать чужой код, цикл там вроде рабочий, но завис на том что не могу изменить определение массивов в готовом макросе на массивы которые у меня на листах. Размер таблицы около 100 000 строк, помогите пожалуйста двоечнику.

Решение задачи: «Поиск в столбце по словарю»

textual
Листинг программы
Option Compare Text
 
Sub Test()
    Dim Dic As Object, Mas, Res, El, i&, cRow&, f As Boolean
    Set Dic = CreateObject("scripting.dictionary")
    Dic.comparemode = 1
    With Sheets("словарь")
        For Each El In .Range(.Cells(1), .Cells.End(xlDown)).Value
            Dic("*" & El & "*") = 0
        Next
    End With
    With Sheets("данные")
        Mas = .Range(.[t2], .Cells(.Rows.Count, "T").End(xlUp)).Value
    End With
    cRow = UBound(Mas)
    ReDim Res(1 To cRow, 1 To 1)
    For i = 1 To cRow
        f = False
        For Each El In Dic.keys
            If Mas(i, 1) Like El Then
                f = True
                Exit For
            End If
        Next
        If f Then Res(i, 1) = 1
    Next
    Sheets("данные").[bb2].Resize(cRow).Value = Res
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5