Здравия. Прошу прощения, если задача тривиальная, но сам уже второй день не могу сообразить :/ есть столбец с текстом, надо просмотреть текст на наличие слова из другой таблицы и в ячейку рядом поставить значение соответствующие второй таблице.
Здравия. Прошу прощения, если задача тривиальная, но сам уже второй день не могу сообразить :/ есть столбец с текстом, надо просмотреть текст на наличие слова из другой таблицы и в ячейку рядом поставить значение соответствующие второй таблице.
Добрый день. Судя по этому примеру - вполне можно обойтись ВПР() или несложным макросом сделать работу. Но если мы сделаем свой файл с решением - думаю 90% это решение Вам не подойдёт. Поэтому согласно правилам покажите свой файл с данными - и со всеми вариантами исходных данных (но не нужно тысячи строк, хватит по одному образцу каждого расположения нужных данных в строке).
Добрый день. Судя по этому примеру - вполне можно обойтись ВПР() или несложным макросом сделать работу. Но если мы сделаем свой файл с решением - думаю 90% это решение Вам не подойдёт. Поэтому согласно правилам покажите свой файл с данными - и со всеми вариантами исходных данных (но не нужно тысячи строк, хватит по одному образцу каждого расположения нужных данных в строке).Hugo
Выполнять при активном нужном листе - можно код поместить в модуль этого листа: [vba]
Code
Sub tt() Dim a(), i&, t$ a = [g2].CurrentRegion.Value With CreateObject("scripting.dictionary") For i = 2 To UBound(a): .Item(a(i, 1)) = a(i, 2): Next a = [b2].CurrentRegion.Value ReDim b(1 To UBound(a), 1 To 1) b(1, 1) = "Data" For i = 2 To UBound(a) t = Replace(Split(a(i, 1), "USER^ ^")(1), "^", "") If .exists(t) Then b(i, 1) = .Item(t) Next End With [c2].Resize(UBound(b), 1) = b End Sub
[/vba]
Выполнять при активном нужном листе - можно код поместить в модуль этого листа: [vba]
Code
Sub tt() Dim a(), i&, t$ a = [g2].CurrentRegion.Value With CreateObject("scripting.dictionary") For i = 2 To UBound(a): .Item(a(i, 1)) = a(i, 2): Next a = [b2].CurrentRegion.Value ReDim b(1 To UBound(a), 1 To 1) b(1, 1) = "Data" For i = 2 To UBound(a) t = Replace(Split(a(i, 1), "USER^ ^")(1), "^", "") If .exists(t) Then b(i, 1) = .Item(t) Next End With [c2].Resize(UBound(b), 1) = b End Sub