Сравнение ячеек и вставка - VBA

Узнай цену своей работы

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

Доброго дня! Просьба помочь. Нужен макрос. Есть два листа exel необходимо чтобы все ячейки столбца А,Листа2(всего их 370) сравнивались со всеми ячейками листа1 и если сравнение истинно, то значение Аn Листа1 (n - номер ячейки в котором нашлось искомое значение), вставлялось в ячейку Bm листа2 (m номер ячейки которую сравниваем). Все значения ячеек строковые. В листе1 может быть несколько значений столбца А листа2, соотвественно копировать надо несколько ячеек Аn Листа1. Вроде понятно описал) Буду очень благодарен за помощь.

Решение задачи: «Сравнение ячеек и вставка»

textual
Листинг программы
Sub Sootvet_A()
    Dim i&, j&, b(), sh As Worksheet
    With CreateObject("Scripting.Dictionary")
        a = Sheets("Лист1").UsedRange
        For i = 1 To UBound(a)
            For j = 2 To UBound(a, 2)
                If Not IsEmpty(a(i, j)) Then
                    If .exists(a(i, j)) Then
                        .Item(a(i, j)) = .Item(a(i, j)) & ";" & a(i, 1)
                    Else
                        .Item(a(i, j)) = a(i, 1)
                    End If
                End If
            Next
        Next
        For Each sh In Sheets
            If sh.Name <> "Лист1" Then
                a = sh.UsedRange
                ReDim b(1 To UBound(a), 1 To 1)
                For i = 1 To UBound(a)
                    If .exists(a(i, 1)) Then b(i, 1) = .Item(a(i, 1))
                Next
                sh.Cells(1, 2).Resize(UBound(b), 1) = b
            End If
        Next
    End With
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы