Часто встречающаяся задача пользователям Excel - сравнение двух диапазонов. Решений, как всегда много, но мы рассмотрим решение с помощью языка программирования VBA.
Тем, кто не знает что такое VBA, порекомендую предварительно прочитать на эту тему статьи на моем канале или на других ресурсах (кому как больше нравится ))) (как перейти в редактор VBA в программе Excel можно прочитать в этой статье перейдя по ссылке)
Итак, исходное состояние.
Берем два диапазона ячеек № 1 и № 2
Алгоритм следующий:
- Задаем значения переменных: r1 и r2 соответственно для наших диапазонов 1 и 2, rF - для временного диапазона (его мы будем использовать при поиске, i - числовая переменная, strF текстовая переменная;
- Задаем адреса наших диапазонов переменным r1 и r2
- С помощью циклов последовательно будем перебирать все значения ячеек диапазонов и искать значение ячейки в противоположном диапазоне.
- В первом диапазоне, если мы не найдем текущего текстового значения в диапазоне №2, закрашиваем текущую ячейку красным цветом, это означает что в диапазоне № 2 удалено это значение.
- Во втором диапазоне, если не найдем текущего текстового значения в диапазоне № 1, закрашиваем текущую ячейку зеленым цветом, что значит в диапазоне № 2 появилось новое значение.
В коде VBA это будет выглядеть следующим образом:
Sub СравнениеДиапазонов()
' пункт 1 алгоритма
Dim r1 As Range, r2 As Range
Dim i As Integer
Dim rF As Range
Dim strF As String
' пункт 2
Set r1 = ActiveSheet.Cells(4, 2).CurrentRegion
Set r2 = ActiveSheet.Cells(4, 6).CurrentRegion
' пункт 3
' пункт 4
For i = 1 To r1.Cells.Count
strF = r1.Cells(i, 1) ' переменной strF задаем текстовое значение ячейки
Set rF = r2.Find(strF, , , xlWhole) ' в этой строке мы ищем наш текст в ячейке в противоположном диапазоне
If rF Is Nothing Then 'если в диапазоне № 2 текст не найдет, то закрашиваем
r1.Cells(i, 1).Interior.Color = RGB(192, 0, 0)
End If
Next i
' пункт 5
For i = 1 To r2.Cells.Count
strF = r2.Cells(i, 1)
Set rF = r1.Find(strF, , , xlWhole)
If Not rF Is Nothing Then
Else
r2.Cells(i, 1).Interior.Color = RGB(198, 224, 180)
End If
Next i
End Sub
Копируйте и вставляйте этот код в редактор VBA и пользуйтесь на здоровье. Обратите внимание на то, что обязательно нужно менять значения в этих строках:
Set r1 = ActiveSheet.Cells(4, 2).CurrentRegion
Set r2 = ActiveSheet.Cells(4, 6).CurrentRegion
Они задают значения диапазона. В данном случае это цифры в скобках. Они означают что дипазон r1 задается как весь диапазон от ячейки, расположенной на 4 строке и 2 столбце.
Если статья вам понравилась ставьте лайки и подписывайтесь.