Сравнение столбцов на разных листах и перенос на другой - VBA

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

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

Добрый день. Подскажите, пожалуйста. Имеется, один столбец на первом листе, его надо сравнить со столбцом на втором листе и со столбцом на третьем листе. И при совпадении значений не первом листе нужно закрасить ячейку во втором столбце, если значение совпало со вторым листом и в третьем столбце, если совпало с 3 листом (закрасить рядом с совпавшей цифрой). Я нашел похожий макрос в сети, но не знаю как его адаптировать.
Листинг программы
  1. Sub CompareColumns()
  2. Dim i As Long, j As Long, k As Long, s1 As String, s2 As String, b As Boolean
  3. Dim src As Worksheet, dst As Worksheet, chk As Worksheet
  4. Set src = ThisWorkbook.Worksheets("1")
  5. Set dst = ThisWorkbook.Worksheets("2")
  6. Set chk = ThisWorkbook.Worksheets("4")
  7. i = 2
  8. k = 1
  9. s1 = src.Cells(i, 1).Value
  10. Do While Not s1 = ""
  11. b = False
  12. j = 2
  13. s2 = dst.Cells(j, 1).Value
  14. Do While s2 <> ""
  15. If s1 = s2 Then
  16. b = True
  17. Exit Do
  18. End If
  19. j = j + 1
  20. s2 = dst.Cells(j, 1).Value
  21. Loop
  22. If b Then
  23. chk.Cells(k, 4).Interior.Color = vbGreen
  24. chk.Cells(k, 4).Value = "="
  25. k = k + 1
  26. End If
  27. i = i + 1
  28. s1 = src.Cells(i, 1).Value
  29. Loop
  30. Set src = Nothing
  31. Set dst = Nothing
  32. Set chk = Nothing
  33. End Sub
Прилагаю пример, а результат должен получится как на 4 листе в книге. Огромное спасибо заранее!

Решение задачи: «Сравнение столбцов на разных листах и перенос на другой»

textual
Листинг программы
  1. Sub QWER()
  2.     Dim R, M
  3.     Dim o2: Set o2 = CreateObject("scripting.Dictionary")
  4.     Dim o3: Set o3 = CreateObject("scripting.Dictionary")
  5.    
  6.     With Лист2
  7.         M = .Range("A1").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
  8.         For R = 1 To UBound(M): o2(M(R, 1)) = 4: Next '4 индекс цвета заливки
  9.    End With
  10.    
  11.     With Лист3
  12.         M = .Range("A1").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
  13.         For R = 1 To UBound(M): o3(M(R, 1)) = 6: Next ' 6 индекс цвета заливки
  14.    End With
  15.    
  16.     With Лист1
  17.         M = .Range("A1").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row)
  18.         For R = 1 To UBound(M)
  19.             If o2.Exists(M(R, 1)) Then Лист1.Cells(R, 2).Interior.ColorIndex = o2(M(R, 1))
  20.             If o3.Exists(M(R, 1)) Then Лист1.Cells(R, 3).Interior.ColorIndex = o3(M(R, 1))
  21.         Next
  22.     End With
  23.    
  24. End Sub

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


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

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

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы