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