Primerjajte obsege v Excelu VBA - enostavni makri v Excelu

Kazalo

Spodaj si bomo ogledali program v Excel VBA to primerja naključno izbrano razponi in poudarja edinstvene celice. Če področja še ne poznate, vam priporočamo, da najprej preberete ta primer.

Situacija:

Opomba: edina edinstvena vrednost v tem primeru je 3, saj se vse druge vrednosti pojavljajo na vsaj še enem področju. Če želite izbrati obseg ("B2: B7, D3: E6, D8: E9"), pridržite tipko Ctrl in izberite vsako področje.

Na delovni list postavite ukazni gumb in dodajte naslednje kodne vrstice:

1. Najprej razglasimo štiri objekte Range in dve spremenljivki tipa Integer.

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

2. Inicializiramo Range object rangeToUse z izbranim obsegom.

Set rangeToUse = Izbor

3. Vrstico, ki spremeni barvo ozadja vseh celic, dodajte v 'Brez zapolnitve'. Dodajte tudi vrstico, ki odstrani meje vseh celic.

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

4. Obvestite uporabnika, ko izbere samo eno področje.

Če je Selection.Areas.Count <= 1 Potem
MsgBox "Izberite več področij."
Sicer pa
Konec Če

Naslednje kodne vrstice (pri 5, 6 in 7) je treba dodati med Else in End If.

5. Obarvajte celice izbranih območij.

rangeToUse.Interior.ColorIndex = 38

6. Obrobite vsako območje.

Za vsako posamezno območje v območjuToUse.Areas
singleArea.BorderAround ColorIndex: = 1, Teža: = xlThin
Naslednja singleArea

7. Preostanek tega programa je videti na naslednji način.

Za i = 1 Za obsegToUse.Areas.Count
Za j = i + 1 Za obsegToUse.Areas.Count
Za vsako celico 1 V območjuToUse.Areas (i)
Za vsako celico2 V območjuToUse.Areas (j)
Če cell1.Value = cell2.Value Potem
celica 1.Interior.ColorIndex = 0
celica2.Interior.ColorIndex = 0
Konec Če
Naslednja celica 2
Naslednja celica 1
Naprej j
Naprej i

Pojasnilo: Morda bo videti nekoliko premočno, vendar ni tako težko. rangeToUse.Areas.Count je enako 3, zato se prvi dve kodni vrstici zmanjšata na For i = 1 do 3 in For j = i + 1 do 3. Za i = 1, j = 2, Excel VBA primerja vse vrednosti prvega območja. z vsemi vrednostmi drugega področja. Za i = 1, j = 3 Excel VBA primerja vse vrednosti prvega območja z vsemi vrednostmi tretjega območja. Za i = 2, j = 3 Excel VBA primerja vse vrednosti drugega območja z vsemi vrednostmi tretjega področja. Če so vrednosti enake, barvo ozadja obeh celic nastavite na 'No Fill', ker nista edinstveni.

Rezultat, ko kliknete ukazni gumb na listu:

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave