Сравнение диапазонов в Excel VBA - макросы Easy Excel

Содержание

Ниже мы рассмотрим программу на Excel VBA тот сравнивает случайно выбранных диапазоны и выделяет уникальные ячейки. Если вы еще не знакомы с областями, мы настоятельно рекомендуем вам сначала прочитать этот пример.

Ситуация:

Примечание: единственное уникальное значение в этом примере - 3, поскольку все остальные значения встречаются как минимум еще в одной области. Чтобы выбрать диапазон («B2: B7, D3: E6, D8: E9»), удерживайте нажатой клавишу Ctrl и выберите каждую область.

Поместите командную кнопку на свой рабочий лист и добавьте следующие строки кода:

1. Сначала мы объявляем четыре объекта Range и две переменные типа Integer.

Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2. Инициализируем объект Range rangeToUse выбранным диапазоном.

Установить rangeToUse = Selection

3. Добавьте линию, изменяющую цвет фона всех ячеек на «Без заливки». Также добавьте линию, удаляющую границы всех ячеек.

Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlNone

4. Сообщите пользователю, когда он или она выбирает только одну область.

Если Selection.Areas.Count <= 1 Тогда
MsgBox «Выберите более одной области».
Еще
Конец, если

Следующие строки кода (5, 6 и 7) должны быть добавлены между Else и End If.

5. Раскрасьте ячейки выбранных областей.

rangeToUse.Interior.ColorIndex = 38

6. Граница каждой области.

Для каждого singleArea In rangeToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Weight: = xlThin
Следующий сингл

7. В остальном эта программа выглядит следующим образом.

Для i = 1 до rangeToUse.Areas.Count
Для j = i + 1 To rangeToUse.Areas.Count
Для каждой ячейки1 в rangeToUse.Areas (i)
Для каждой ячейки2 в rangeToUse.Areas (j)
Если cell1.Value = cell2.Value Тогда
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Конец, если
Следующая ячейка2
Следующая ячейка1
Следующий j
Далее я

Пояснение: это может показаться немного сложным, но это не так уж и сложно. rangeToUse.Areas.Count равно 3, поэтому первые две строки кода уменьшаются до For i = 1 до 3 и For j = i + 1 до 3. Для i = 1, j = 2 Excel VBA сравнивает все значения первой области. со всеми значениями второй области. Для i = 1, j = 3 Excel VBA сравнивает все значения первой области со всеми значениями третьей области. Для i = 2, j = 3 Excel VBA сравнивает все значения второй области со всеми значениями третьей области. Если значения совпадают, для цвета фона обеих ячеек устанавливается значение «Без заливки», поскольку они не уникальны.

Результат при нажатии кнопки команды на листе:

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave