Порівняйте діапазони в Excel VBA - Прості макроси 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 вибраним діапазоном.

Set rangeToUse = Вибір

3. Додайте рядок, який змінює колір фону всіх клітинок, до "Без заливки". Також додайте рядок, який видаляє межі всіх клітинок.

Комірки.Інтер'єр.КолірІндекс = 0
Осередки.Кордюри.Лінійний стиль = xlНі

4. Повідомте користувача, коли він або вона вибирає лише одну область.

Якщо Selection.Areas.Count <= 1 Тоді
MsgBox "Виберіть кілька областей."
Інакше
Закінчити Якщо

Наступні рядки коду (на 5, 6 і 7) потрібно додати між Else та End If.

5. Розфарбуйте клітинки виділених областей.

rangeToUse.Interior.ColorIndex = 38

6. Облямовуйте кожну область.

Для кожної окремої області в діапазоніToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Вага: = xlТонкий
Наступна сингл -зона

7. Решта цієї програми виглядає наступним чином.

Для i = 1 Для діапазонуToUse.Areas.Count
Для j = i + 1 Для діапазонуToUse.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
Далі i

Пояснення: це може виглядати дещо переважним, але це не так складно. 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 порівнює всі значення другої області з усіма значеннями третьої області. Якщо значення однакові, колір фону обох клітинок встановлюється на «No Fill», оскільки вони не є унікальними.

Результат, коли ви натискаєте кнопку команди на аркуші:

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

wave wave wave wave wave