Сравнете диапазоните в 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 object rangeToUse с избрания диапазон.

Задайте rangeToUse = Избор

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. Ограничете всяка област.

За всяка единична област в диапазонToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Тегло: = xlТънко
Следваща единична зона

7. Останалата част от тази програма изглежда, както следва.

За i = 1 За rangeToUse.Areas.Count
За j = i + 1 За 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
Следва 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