Приветствую пользователей данного форума.
Столкнулся с проблемой и прошу Вашей помощи, чтобы ее побороть. Использую MS Office 2013 (рус).
Имеется excel файл с несколькими листами:
листы №1...n содержат одинаковые по структуре таблицы с содержанием необходимых сведений, некоторые из которых подлежат замене по шаблону
лист №n+1 содержит данные для замены
Необходимо на листах №1...n произвести замену кода в поле "Наименование" на его расшифровку, которая берется из листа №n+1, причем при отсутствии кода в расшифровке, исходная ячейка должна остаться без изменений.
В результате поиска по данному форуму частично решил свою проблему, путем использования следующего макроса:
Код |
---|
Sub Zamena()
Dim b
For Each b In [b2:b88]
b.Value = Evaluate("VLookup(" & b.Adress & ",'ForReplace'!A2:'ForReplace'!B5,2,0)")
Next
End Sub
|
Однако остались следующие проблемные вопросы:
1. Как оставить код, которого нет в расшифровке нетронутым? После работы данного макроса, в случае отсутствия расшифровки кода получаем результат #Н/Д. Пытался решить проблему с использованием IFERROR, однако попытка не увенчалась успехом.
2. В макросе для примера указан массив b2:b88, и после его работы в графе "B" после 7-ой строки по 88-ую получаем #Н/Д, а хотелось бы видеть там пустые ячейки, так как макрос универсальный и на одних листах 5 записей, а на других 88.
3. Как заставить макрос после его запуска сработать сразу на всех листах №1...n, за исключением листа №n+1 (в данном случае листа ForReplace)?
Пример с данным макросом прикрепляю.
Если данный пример уже обсуждался, прошу не пинать, заранее извиняюсь.