Страницы: 1
RSS
Неточный поиск значений из массива в строке
 
Всем привет!
В общем такая проблема, есть массив с определенными словами и есть таблица с предложениями.
Мне нужно в каждом предложении делать неточный поиск любого слова из массива и если хоть что-то находится - подставлять да или нет.
Пример файл прикладываю.

Помогите кто чем может
Изменено: borovushka - 20.02.2021 20:30:06
 
Код
вхождение любого из 4 слов из массива

Код
Sub iWordMassivRed()
Dim i As Long
Dim j As Integer
Dim n As Integer
Dim iLR As Long
Dim iLastRow As Long
Dim re As Object
Dim objMatches As Object
Dim objMatch As Object
  iLR = Cells(1, 1).End(xlDown).Row
  iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
      Range("A2:A" & iLR).Font.ColorIndex = 0
For n = 11 To iLastRow
      Set re = CreateObject("VBScript.RegExp")
          re.Global = True
          re.IgnoreCase = True
          re.Pattern = Cells(n, "A")
  For i = 2 To iLR
        Set objMatches = re.Execute(Cells(i, "A"))
          If objMatches.Count <> 0 Then
             For j = 0 To objMatches.Count - 1
                Set objMatch = objMatches.Item(j)
                With Cells(i, "A").Characters(Start:=objMatch.FirstIndex + 1, Length:=objMatch.Length).Font
                    .ColorIndex = 3
                End With
             Next
          End If
    Next
      Set re = Nothing
Next
End Sub

Вхождения подсвечиваются красным цветом
 
borovushka, попробуйте мою функцию

Видео

Код
Function ContainsOneOfThese(stringRange As Range, substringsRange As Range) As String

    Dim inString As String
    Dim substringsArray As Variant
    
    inString = stringRange.Value
    substringsArray = substringsRange.Value
    
    For i = LBound(substringsArray) To UBound(substringsArray)
       
        If InStr(inString, substringsArray(i, 1)) > 0 Then
            
            ContainsOneOfThese = "Да"
            Exit Function
        
        End If

    Next i
    
    ContainsOneOfThese = "Нет"
    
End Function

 
Я правильно понимаю что стандартным набором функций такую задачу не решить?
Только дополнительное программирование?
 
borovushka, можете попробовать формулы массива https://www.planetaexcel.ru/techniques/2/91/
 
Представленные варианты - это космос.
Вы, ребятки, божите.
Спасибо)
 
Цитата
borovushka написал:
Я правильно понимаю что стандартным набором функций такую задачу не решить?
неправильно понимаете:
Код
=ЕСЛИ(СУММ(ЕСЛИОШИБКА(ПОИСК($A$11:$A$14;A2);0));"да";"нет")
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, вы чертов гений)
Спасибо большое!
Страницы: 1
Наверх