Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

помощь с макросом поиска и замены

Автор nick79087, 28.08.2013, 19:26

« назад - далее »

nick79087

здравствуйте!

существует таблица с данными на двух листах. на первом листе общая информация, на втором - информация для поиска и замены.
нужно чтобы макрос сравнил значения столбца B лист2 со значениями столбца E листа1 и, в случае совпадения, заменил значения столбца D лист1 соответствующим значением из столбца B лист2. По поиску нашел похожий макрос, но я в этом деле полный профан - не могу заставить его работать. переделанный мною (и не работающий :)) макрос ниже:

Sub change_name()
Dim i As Integer
For i = 1 To 1000
    If Sheets("Лист1").Cells(e, 2).Value = Sheets("Лист2").Cells(b, 2).Value Then
       Sheets("Лист1").Cells(d, 2).Value = Sheets("Лист2").Cells(a, 2).Value
    End If
Next i
End Sub

сама таблица - во вложении.

Буду очень благодарен, если поправите макрос или укажете более простое решение при помощи формулы.



sergo44441

Не торопись, и все успеешь намного быстрее

nick79087

Цитата: sergo44441 от 29.08.2013, 01:21
Может так?
да, как вариант. спасибо огромное!

Hugo121

Option Explicit

Sub tt()
    Dim a(), i&

    With CreateObject("scripting.dictionary")
        .comparemode = 1
        a = Sheets(2).[a1].CurrentRegion.Value
        For i = 2 To UBound(a): .Item(a(i, 2)) = a(i, 1): Next
        a = Sheets(1).[a1].CurrentRegion.Columns(4).Resize(, 2).Value
        For i = 2 To UBound(a)
            If .exists(a(i, 2)) Then a(i, 1) = .Item(a(i, 2))
        Next
        Sheets(1).[a1].CurrentRegion.Columns(4).Resize(, 2).Value = a
    End With

End Sub
webmoney: E265281470651 Z422237915069