2014-12-13 2 views
2

У меня есть рабочий лист, который импортирует все мои заказы, однако при создании ярлыков у меня ограниченное пространство для названия. Я использую Find & Замените макрос в Excel, который просматривает мой текущий активный импортированный рабочий лист и заменяет текст на другом листе, который я использую в качестве таблицы с двумя столбцами, столбец A - это то, что заголовок импортируется, а столбец B - что я хочу изменить. Этот скрипт отлично работает, за исключением того, что он не находит столбцы, которые имеют другое начало. Например:Excel Find & Replace Macro

Imported Рабочий лист:

на вход 1: Бананы

на вход 2: 30 X БАНАНЫ

Таблица:

Колонка A: БАНАНЫ

Колонка B: Yellow Bananas

// Script Запускает //

Выход: Импортные Рабочий лист:

Вход 1: Желтый Бананы

вход 2: 30 X Бананы

Как вы можете видеть в в приведенном выше примере запись «30 X BANANAS» не изменяется на «30 X Yellow Bananas», как мне бы хотелось. Я предполагаю, что мне нужно добавить подстановочный код кода к моему сценарию ниже, но я не уверен, как его включить?

Sub FindReplace() 
    Dim s As String 
    Dim cell As Range 
    For Each cell In Range("H3:H5000").Cells 
    If cell <> "" Then 
     ans = Application.VLookup(cell, Sheets("Script").Range("A1:B1000"), 2, 0) 
     If Not IsError(ans) Then cell = ans 
    End If 
    Next cell 
End Sub 

ответ

0

Если вы используете функцию Range.Replace, а не функции ВПР, вы получите результат, который вы ищете.

Перед

enter image description here

После

enter image description here

Sub FindNReplace() 
Dim InputRng As Range, ReplaceRng As Range 

'Set Range Values 
Set InputRng = Range("A1:A5") 
Set ReplaceRng = Sheets("Script").Range("A1:B100") 

'Spin through replacement range and perform replace 
For Each Rng In ReplaceRng.Columns(1).Cells 
    InputRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value 
Next 
End Sub 
+0

Это работало отлично, спасибо. – EzyCare

+0

Добро пожаловать. – WorkSmarter