Сравнение столбцов на разных листах и перенос на другой - VBA
Формулировка задачи:
Добрый день.
Подскажите, пожалуйста. Имеется, один столбец на первом листе, его надо сравнить со столбцом на втором листе и со столбцом на третьем листе. И при совпадении значений не первом листе нужно закрасить ячейку во втором столбце, если значение совпало со вторым листом и в третьем столбце, если совпало с 3 листом (закрасить рядом с совпавшей цифрой).
Я нашел похожий макрос в сети, но не знаю как его адаптировать.
Прилагаю пример, а результат должен получится как на 4 листе в книге.
Огромное спасибо заранее!
Листинг программы
- Sub CompareColumns()
- Dim i As Long, j As Long, k As Long, s1 As String, s2 As String, b As Boolean
- Dim src As Worksheet, dst As Worksheet, chk As Worksheet
- Set src = ThisWorkbook.Worksheets("1")
- Set dst = ThisWorkbook.Worksheets("2")
- Set chk = ThisWorkbook.Worksheets("4")
- i = 2
- k = 1
- s1 = src.Cells(i, 1).Value
- Do While Not s1 = ""
- b = False
- j = 2
- s2 = dst.Cells(j, 1).Value
- Do While s2 <> ""
- If s1 = s2 Then
- b = True
- Exit Do
- End If
- j = j + 1
- s2 = dst.Cells(j, 1).Value
- Loop
- If b Then
- chk.Cells(k, 4).Interior.Color = vbGreen
- chk.Cells(k, 4).Value = "="
- k = k + 1
- End If
- i = i + 1
- s1 = src.Cells(i, 1).Value
- Loop
- Set src = Nothing
- Set dst = Nothing
- Set chk = Nothing
- End Sub
Решение задачи: «Сравнение столбцов на разных листах и перенос на другой»
textual
Листинг программы
- Sub QWER()
- Dim R, M
- Dim o2: Set o2 = CreateObject("scripting.Dictionary")
- Dim o3: Set o3 = CreateObject("scripting.Dictionary")
- With Лист2
- M = .Range("A1").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
- For R = 1 To UBound(M): o2(M(R, 1)) = 4: Next '4 индекс цвета заливки
- End With
- With Лист3
- M = .Range("A1").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
- For R = 1 To UBound(M): o3(M(R, 1)) = 6: Next ' 6 индекс цвета заливки
- End With
- With Лист1
- M = .Range("A1").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
- For R = 1 To UBound(M)
- If o2.Exists(M(R, 1)) Then Лист1.Cells(R, 2).Interior.ColorIndex = o2(M(R, 1))
- If o3.Exists(M(R, 1)) Then Лист1.Cells(R, 3).Interior.ColorIndex = o3(M(R, 1))
- Next
- End With
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д