Добрый день уважаемые форумчане. Прошу, если кто может помогите. Не могу справиться с задачей, хотя подозреваю, что она не сложная. Описание: Есть столбец ячеек (А) - в нем в каждой строке какой-то текст (по несколько слов в ячейке). Есть рядом массив ячеек D2:F4. В каждой ячейке различный текст (по несколько слов в ячейке). Необходимо: найти в столбце А любое слово которое встречается в массиве, и напротив ячейки столбца написать код ячейки массива, где это слово есть. Если встречается несколько раз, то написать все коды где встречается через запятую. Прикладываю пример, на нем результат как должно выглядеть. Заранее спасибо.
Добрый день уважаемые форумчане. Прошу, если кто может помогите. Не могу справиться с задачей, хотя подозреваю, что она не сложная. Описание: Есть столбец ячеек (А) - в нем в каждой строке какой-то текст (по несколько слов в ячейке). Есть рядом массив ячеек D2:F4. В каждой ячейке различный текст (по несколько слов в ячейке). Необходимо: найти в столбце А любое слово которое встречается в массиве, и напротив ячейки столбца написать код ячейки массива, где это слово есть. Если встречается несколько раз, то написать все коды где встречается через запятую. Прикладываю пример, на нем результат как должно выглядеть. Заранее спасибо.GAPAGAPA
Sub d() Dim m, a, m1, t& Dim r As Range, r1 As Range, c As Range, ce As Range Set r = [a1:a5] Set r1 = [d1:f4] For Each c In r m = Split(c, " ") ReDim a(1 To 1) t = 0 For Each m1 In m For Each ce In r1 If InStr(1, ce, m1) > 0 And Len(m1) > 1 Then Debug.Print m1; "-->"; ce; "//"; ce.Address t = t + 1 ReDim Preserve a(1 To t) a(t) = ce.Address End If Next Next c.Offset(0, 1) = Join(a, ",") Next End Sub
[/vba]
Можно макросом:
[vba]
Код
Sub d() Dim m, a, m1, t& Dim r As Range, r1 As Range, c As Range, ce As Range Set r = [a1:a5] Set r1 = [d1:f4] For Each c In r m = Split(c, " ") ReDim a(1 To 1) t = 0 For Each m1 In m For Each ce In r1 If InStr(1, ce, m1) > 0 And Len(m1) > 1 Then Debug.Print m1; "-->"; ce; "//"; ce.Address t = t + 1 ReDim Preserve a(1 To t) a(t) = ce.Address End If Next Next c.Offset(0, 1) = Join(a, ",") Next End Sub
SLAVICK, GAPAGAPA, Супер. Спасибо, выручили. Тут правда возникла еще одна подзадача - все тоже самое только поиск в колонке А не по отдельным словам из массива, а по полному значению в ячейках массива Т.е. я чуть подправил - файл - так должно выглядеть после обработки Прошу, если не затруднительно помогите еще раз
SLAVICK, GAPAGAPA, Супер. Спасибо, выручили. Тут правда возникла еще одна подзадача - все тоже самое только поиск в колонке А не по отдельным словам из массива, а по полному значению в ячейках массива Т.е. я чуть подправил - файл - так должно выглядеть после обработки Прошу, если не затруднительно помогите еще разGAPAGAPA
только поиск в колонке А не по отдельным словам из массива, а по полному значению в ячейках массива
На сколько я понял из этой фразы нужно поменять всего одну строку: [vba]
Код
If InStr(1, ce, m1) > 0 And Len(m1) > 1 Then
[/vba] на [vba]
Код
If InStr(1, m1, ce) > 0 And Len(m1) > 1 And Len(ce) > 1 Then
[/vba] Но Ваш пример, либо не совсем корректен, либо я не правильно понял. В частности почему не должно находить: "жареная" в "рыба жареная" ? См. вложение.
только поиск в колонке А не по отдельным словам из массива, а по полному значению в ячейках массива
На сколько я понял из этой фразы нужно поменять всего одну строку: [vba]
Код
If InStr(1, ce, m1) > 0 And Len(m1) > 1 Then
[/vba] на [vba]
Код
If InStr(1, m1, ce) > 0 And Len(m1) > 1 And Len(ce) > 1 Then
[/vba] Но Ваш пример, либо не совсем корректен, либо я не правильно понял. В частности почему не должно находить: "жареная" в "рыба жареная" ? См. вложение.SLAVICK