Страницы: 1
RSS
Замена части строки по справочнику соответствия
 
Добрый вечер!

Есть ячейки, в которых находятся id товара через запятую. Например:
192,703,695
Есть справочник, в котором описано соответствие 1 к 1 вида:
19211111
70322222
69533333
Как заменить id на новые по данному справочнику? Чтобы в итоге было вот так:

11111,22222,33333
Реальный пример во вложении. Спасибо за подсказки!
Изменено: JohnyLee - 22.06.2022 00:51:01
 
JohnyLee,
из глупых идей, которые залезли в голову:
разделить ячейку по номерам с помощью функции здесь и найти каждый номер с помощью ИНДЕС+ПОИСКПОЗ
Изменено: evgeniygeo - 22.06.2022 07:04:58
 
Мне всегда проще выполнять такую работу макросом
Если работу приходится выполнять часто сделать надстройку с зашитой таблицей соответствия
 
Цитата
написал:
JohnyLee,
из глупых идей, которые залезли в голову:
разделить ячейку по номерам с помощью функции  здесь  и найти каждый номер с помощью ИНДЕС+ПОИСКПОЗ
Да, я так же начал делать. В принципе, идея рабочая. Спасибо!

Цитата
написал:
Мне всегда проще выполнять такую работу макросом
Если работу приходится выполнять часто сделать надстройку с зашитой таблицей соответствия
Спасибо вам большое за готовое решение! Все отлично работает!
Благодаря тому, что вы добавили в макрос обработку отсутствующего значения еще и ошибку в таблице удалось найти.
 
Посмотрите ещё и эту статью
Массовая замена текста формулами
 
Можно так (массивная), если офис 2019 и выше
Код
=ОБЪЕДИНИТЬ(",";1;ЕСЛИОШИБКА(ИНДЕКС('Справочник соответствия'!$A$2:$A$6526;ПОИСКПОЗ(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(A2;",";"</s><s>")&"</s></t>";"//s");'Справочник соответствия'!$B$2:$B$6526;0));"не найдено"))

или так чуть покороче
Код
=ОБЪЕДИНИТЬ(",";1;ПРОСМОТРX(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(A2;",";"</s><s>")&"</s></t>";"//s");'Справочник соответствия'!$B$2:$B$6526;'Справочник соответствия'!$A$2:$A$6526;"не найдено";0;1))

PS: Удалил большУю часть данных, чтобы смог догрузить файл, поэтому могут быть ненайденные номера, если номер не найден, то пишется "не найдено"

PS PS: Чтобы корректно скопировать формулу её желательно брать из файла, редактор может понимать теги функции как свои теги HTML и подменять значения

PS PS PS: Или так, должен работать в 2016
Код
=ЛЕВСИМВ(СЦЕП(ПРОСМОТРX(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(A2;",";"</s><s>")&"</s></t>";"//s");'Справочник соответствия'!$B$2:$B$4911;'Справочник соответствия'!$A$2:$A$4911;"не найдено";0;1)&",");ДЛСТР(СЦЕП(ПРОСМОТРX(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(A2;",";"</s><s>")&"</s></t>";"//s");'Справочник соответствия'!$B$2:$B$4911;'Справочник соответствия'!$A$2:$A$4911;"не найдено";0;1)&","))-1)
Изменено: Msi2102 - 22.06.2022 10:27:14
 
Msi2102, Тысяча благодарностей! Все отлично открылось и работает. Сохранил к себе ваши примеры на будущее. Очень полезные формулы!
Страницы: 1
Наверх