Сравнение диапазонов в Excel VBA
Ниже мы рассмотрим программу в Excel VBA, которая сравнивает случайно выбранные диапазоны и светлые клетки, которые являются уникальными. Если вы не знакомы с ссылке: / VBA-примеры-зон-коллекции [области]
еще, мы настоятельно рекомендуем вам прочитать этот пример первым.
Ситуация:
Примечание: единственное уникальное значение в этом примере 3, так как все другие значения происходят в по меньшей мере еще одной области. Для выбора диапазона ( «B2: B7, D3: E6, D8: E9»), удерживая нажатой клавишу Ctrl и выберите каждую область.
Поместите командную кнопку на листе и добавьте строки следующего кода:
-
Во-первых, мы объявляем четыре объекта Range и две переменные типа Integer.
Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer
-
Мы инициализируем объект rangeToUse Range с выбранным диапазоном.
Set rangeToUse = Selection
-
Добавьте строку, которая изменяет цвет фона всех ячеек «No Fill». Кроме того, добавьте строку, которая удаляет границы всех ячеек.
Cells.Interior.ColorIndex = 0 Cells.Borders.LineStyle = xlNone
-
Информировать пользователя, когда он или она выбирает только одну область.
If Selection.Areas.Count <= 1 Then MsgBox "Please select more than one area." Else End If
Следующие строки кода (на 5, 6 и 7) должны быть добавлены между Else и End If.
-
Цвет ячейки выбранных областей.
rangeToUse.Interior.ColorIndex = 38
-
Граница каждой области.
For Each singleArea In rangeToUse.Areas singleArea.BorderAround ColorIndex:=1, Weight:=xlThin Next singleArea
-
Остальная часть этой программы выглядит следующим образом.
For i = 1 To rangeToUse.Areas.Count For j = i + 1 To rangeToUse.Areas.Count For Each cell1 In rangeToUse.Areas(i) For Each cell2 In rangeToUse.Areas(j) If cell1.Value = cell2.Value Then cell1.Interior.ColorIndex = 0 cell2.Interior.ColorIndex = 0 End If Next cell2 Next cell1 Next j Next i
Объяснение: это может выглядеть немного подавляющим, но это не так уж сложно. rangeToUse.Areas.Count равен 3, поэтому первые две строки кода, чтобы уменьшить при г = 1 до 3, и для J = I + 1 до 3. При г = 1, J = 2, Excel VBA сравнивает все значения первой области со всеми значениями второй области. Для I = 1, J = 3, Excel VBA сравнивает все значения первой области со всеми значениями третьей области. Для I = 2, J = 3, Excel VBA сравнивает все значения второй области со всеми значениями третьей области. Если значения совпадают, он устанавливает цвет фона обеих ячеек «No Fill», потому что они не являются уникальными.
Результат при нажатии на кнопку управления на листе: