Создать файл с актуальной информацией - VBA

Формулировка задачи:

Добрый вечер! Имеется excel файл, напечатанного ниже формата: Столбец "B" - наименование товара; Столбец "C" - seo товара; Столбец "D" - наименование товара; Столбец "E" - seo товара. Напишите пожалуйста макрос который: Поочередно возьмёт ячейку столбца "B" - это наименование товара, который необходимо найти в массиве столбца "D", после найденного совпадения заменить значение seo в соседней ячейке искомого столбца "B" (в столбце "C"), на то, которое записано напротив найденного наименования столбца "D" (в столбце "E"). К примеру, исходник: "B2" - Трактор 1 | "C2" - Трактор Старый | "D6" - Трактор 1 | "E6" Трактор Красный К примеру, необходимый результат: "B2" - Трактор 1 | "C2" - Трактор Красный | "D6" - Трактор 1 | "E6" Трактор Красный P.S. Поменялось содержание ячейки "C2". При условии, что значение не найдено, необходимо оставить старое значение в столбце "C2". Прикрепляю в файле во вложении, excel файл с поддержкой макросов в котором прописана логика с формулами, напишите пожалуйста макрос. У меня меняется файл исходник и количество заполненных строк. Имеет смысл хранить макрос в библиотеке.

Код к задаче: «Создать файл с актуальной информацией - VBA»

textual
Sub cc()
    Dim A, B, i&, j&
    With ActiveSheet
        A = .Range("b1", .Range("c:c").End(xlDown))
        B = .Range("d1", .Range("e:e").End(xlDown))
        For i = 2 To UBound(A, 1)
            For j = 2 To UBound(B, 1)
                If A(i, 1) = B(j, 1) Then A(i, 2) = B(j, 2): Exit For
            Next j
        Next i
        .Range("b1", .Range("c:c").End(xlDown)) = A
    End With
End Sub

14   голосов, оценка 4.071 из 5


СОХРАНИТЬ ССЫЛКУ